日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

P3386 【模板】二分图最大匹配

發布時間:2023/12/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P3386 【模板】二分图最大匹配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

P3386 【模板】二分圖最大匹配

提交71.75k

通過27.33k

時間限制1.00s

內存限制512.00MB

提交答案加入題單

復制題目

題目提供者HOOCCOOH

難度普及+/提高

歷史分數100

?提交記錄??查看題解

標簽

O2優化

?查看算法標簽

進入討論版

相關討論

?查看討論

推薦題目

?查看推薦

?洛谷推薦關閉

?展開

題目描述

給定一個二分圖,其左部點的個數為?nn,右部點的個數為?mm,邊數為?ee,求其最大匹配的邊數。

左部點從?11?至?nn?編號,右部點從?11?至?mm?編號。

輸入格式

輸入的第一行是三個整數,分別代表?nn,mm?和?ee。

接下來?ee?行,每行兩個整數?u, vu,v,表示存在一條連接左部點?uu?和右部點?vv?的邊。

輸出格式

輸出一行一個整數,代表二分圖最大匹配的邊數。

輸入輸出樣例

輸入 #1復制

1 1 1 1 1

輸出 #1復制

1

輸入 #2復制

4 2 7 3 1 1 2 3 2 1 1 4 2 4 1 1 1

輸出 #2復制

2

說明/提示

數據規模與約定

對于全部的測試點,保證:

  • 1 \leq n, m \leq 5001≤n,m≤500。
  • 1 \leq e \leq 5 \times 10^41≤e≤5×104。
  • 1 \leq u \leq n1≤u≤n,1 \leq v \leq m1≤v≤m。

不保證給出的圖沒有重邊。

【AC代碼】

#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e5+10; const int INF=0x3f3f3f3f; inline int read() {char ch=getchar();int n=0,m=1;while(ch<'0'||ch>'9'){if(ch=='-')m=-1;ch=getchar();}while(ch>='0'&&ch<='9')n=(n<<3)+(n<<1)+ch-48,ch=getchar();return n*m; } void write(int n) {if(n>9)write(n/10);putchar(n%10+'0'); } int n,m,p,d[N],head[N],to[N],ne[N],id,ans; bool vis[N]; void add(int x,int y) {to[++id]=y,ne[id]=head[x],head[x]=id; } bool find(int u) {vis[u]=1;for(int i=head[u];i;i=ne[i]){int v=to[i];if(vis[d[v]])continue;if(!d[v]||find(d[v])){d[v]=u;return true;}}return false; } int main(int argc,char **argv) {n=read(),m=read(),p=read();while(p--){int x,y;x=read(),y=read();add(x,y);}for(int i=1;i<=n;i++){memset(vis,0,sizeof vis);if(find(i))ans++;}write(ans);return 0; }

總結

以上是生活随笔為你收集整理的P3386 【模板】二分图最大匹配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。