二分图匹配(匈牙利算法)
来源:互联网 发布:omega7 知乎 编辑:程序博客网 时间:2024/05/22 00:49
/* 二分图匹配 匈牙利 by sbn*/#include<iostream>#include<cstdio>#include<cstring>using namespace std;bool map[1001][1001];int n1,n2,m;int flag[1001],vis[1001];bool dfs(int x){ for (int i1=1;i1<=n2;i1++){ if (map[x][i1]&&!vis[i1]){ vis[i1]=1; if (flag[i1]==0||dfs(flag[i1])){ flag[i1]=x; return true; } } } return false;}int main(){ cin>>n1>>n2>>m; for (int i=1;i<=m;i++) { int a,b; cin>>a>>b; if (a<=n1&&b<=n2) map[a][b]=1; } int ans=0; for (int i=1;i<=n1;i++) { memset(vis,0,sizeof(vis)); if (dfs(i)) ans++; } cout<<ans<<endl;}
阅读全文