51Nod 2006 飞行员配对(二分图最大匹配)
Posted lemonsbiscuit
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51Nod 2006 飞行员配对(二分图最大匹配)相关的知识,希望对你有一定的参考价值。
链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=2006
思路:
二分匹配 注意n m的关系
代码:
1 #include <iostream> 2 #include <string.h> 3 using namespace std; 4 int g[105][105],vis[105],who[105]; 5 int n,m; 6 bool find(int x) { 7 for(int i=m+1; i<=n; ++i) { 8 if(g[x][i]&&!vis[i]) { 9 vis[i]=1; 10 if(!who[i]||find(who[i])) { 11 who[i]=x; 12 return true; 13 } 14 } 15 } 16 return false; 17 } 18 int main() { 19 ios::sync_with_stdio(false); 20 memset(g,0,sizeof(g)); 21 memset(who,0,sizeof(who)); 22 int u,v,sum; 23 cin>>m>>n; 24 while(cin>>u>>v) { 25 if(u==-1&&v==-1) break; 26 g[u][v]=1; 27 } 28 sum=0; 29 for(int i=1; i<=m; ++i) { 30 memset(vis,0,sizeof(vis)); 31 if(find(i)) sum++; 32 } 33 cout<<sum<<endl; 34 return 0; 35 }
以上是关于51Nod 2006 飞行员配对(二分图最大匹配)的主要内容,如果未能解决你的问题,请参考以下文章
51Nod 2006 飞行员配对(二分图最大匹配)-匈牙利算法