bzoj1191--匈牙利算法
Posted gjghfd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj1191--匈牙利算法相关的知识,希望对你有一定的参考价值。
这道题一看就是求二分图最大匹配,不过需要注意的是答案需要前面所有题目都能答对,因为这里WA了无数次......
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int tot,a[3001][2],i,j,n,m,k,f[3001],x,y; bool b[3001],flag=0; bool dfs(int x){ b[x]=1; if(!f[a[x][0]]){ f[a[x][0]]=x; return 1; } if(!b[f[a[x][0]]]&&dfs(f[a[x][0]])){ f[a[x][0]]=x; return 1; } if(!f[a[x][1]]){ f[a[x][1]]=x; return 1; } if(!b[f[a[x][1]]]&&dfs(f[a[x][1]])){ f[a[x][1]]=x; return 1; } return 0; } int main() { scanf("%d%d",&m,&n); for(i=1;i<=n;++i)scanf("%d%d",&a[i][0],&a[i][1]); for(i=1;i<=n;++i){ memset(b,0,sizeof(b)); if(!dfs(i)){ flag=1; break; } } printf("%d\n",!flag?n:(i-1)); return 0; }
以上是关于bzoj1191--匈牙利算法的主要内容,如果未能解决你的问题,请参考以下文章