洛谷P3386 模板二分图匹配

Posted SilverNebula

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷P3386 模板二分图匹配相关的知识,希望对你有一定的参考价值。

匈牙利算法模板

 

 

 1 /*by SilverN*/
 2 #include<algorithm>
 3 #include<iostream>
 4 #include<cstring>
 5 #include<cstdio>
 6 #include<cmath>
 7 #include<vector>
 8 using namespace std;
 9 const int mxn=1010;
10 int read(){
11     int x=0,f=1;char ch=getchar();
12     while(ch<0 || ch>9){if(ch==-)f=-1;ch=getchar();}
13     while(ch>=0 && ch<=9){x=x*10+ch-0;ch=getchar();}
14     return x*f;
15 }
16 int mp[mxn][mxn];
17 int n,m,et;
18 int link[mxn];
19 bool vis[mxn];
20 bool DFS(int u){
21     for(int i=1;i<=n;i++){
22         if(!vis[i] && mp[u][i]){
23             vis[i]=1;
24             if(link[i]==-1 || DFS(link[i])){
25                 link[i]=u;
26                 return 1;
27             }
28         }
29     }
30     return 0;
31 }
32 int solve(){
33     int res=0;
34     for(int i=1;i<=n;i++){
35         memset(vis,0,sizeof vis);
36         if(DFS(i))res++;
37     }
38     return res;
39 }
40 int main(){
41     n=read();m=read();et=read();
42     int i,j;
43     int u,v;
44     for(i=1;i<=et;i++){
45         u=read();v=read();
46         if(u>m || v>m)continue;
47         mp[u][v]=mp[v][u]=1;
48     }
49     memset(link,-1,sizeof link);
50     int ans=solve();
51     printf("%d\n",ans);
52     return 0;
53 }

 

以上是关于洛谷P3386 模板二分图匹配的主要内容,如果未能解决你的问题,请参考以下文章

洛谷—— P3386 模板二分图匹配

洛谷P3386模板二分图匹配

洛谷 p3386模板-二分图匹配(图论)

洛谷P3386 模板二分图匹配

洛谷P3386——二分图匹配

AC日记——模板二分图匹配 洛谷 P3386