匈牙利算法模板

来源:互联网 发布:网络电视手机在线直播 编辑:程序博客网 时间:2024/05/21 17:52
#include<cstdio>#include<cstring>int n,m,d,x,y,ans,c[10001];bool a[10001][10001];bool vis[10001];inline bool dfs(int k){for(int i=1;i<=m;i++)  if(a[k][i] && !vis[i])  {    vis[i]=1;  if(c[i]==0 || dfs(c[i]))  {  c[i]=k;  //异或反转   return true;  }  }return false;}int main(){scanf("%d%d%d",&n,&m,&d);for(int i=1;i<=d;i++){scanf("%d%d",&x,&y);a[x][y]=a[y][x]=1;}for(int i=1;i<=n;i++){memset(vis,0,sizeof(vis));if(dfs(i)) ans++;}    printf("%d\n",ans);    return 0;}
1 0