匈牙利算法模板

来源:互联网 发布:linux查cpu核数 编辑:程序博客网 时间:2024/05/01 08:12
#include<cstdio>#include<cstring>const int maxn = 1010;bool state[maxn] = { 0 }, date[maxn][maxn] = { 0 };int Link[maxn] = { 0 };int n1, n2,m,u,v;void Init() {memset(Link,0,sizeof(Link));scanf("%d%d%d", &n1, &n2, &m);for (int i = 1; i <= m; i++) {scanf("%d%d", &u, &v);date[u][v] = true;}}bool find(int a){for(int i=1;i<=n2;i++)if(date[a][i]&&!state[i]){state[i]=true;if(Link[i]==0||find(Link[i])){Link[i]=a;return true;}}return false;}int main() {Init();int ans=0;for(int i=1;i<=n1;i++){memset(state,0,sizeof(state));if(find(i))ans++;}printf("%d\n",ans);return 0;}

原创粉丝点击