【bzoj 1854】[Scoi2010]遊戲 二分圖匹配
阿新 • • 發佈:2019-01-31
http://blog.csdn.net/pbihao/article/details/52835849
額,感覺像是一道題改一下就好了
#include<cstdio> #include<cstring> #include<iostream> #define maxn 1000010 using namespace std; int n,m,head[maxn*2],tot,vis[maxn],tim,Link[maxn]; struct edge{ int v,next; }e[maxn*2]; void adde(int a,int b){e[tot].v=b,e[tot].next=head[a];head[a]=tot++;} int dfs(int u){ for(int i=head[u];i!=-1;i=e[i].next){ int v=e[i].v; if(vis[v]==tim)continue; vis[v]=tim; if(!Link[v]||dfs(Link[v])){ Link[v]=u; return 1; } } return 0; } int main(){ memset(head,-1,sizeof(head)); scanf("%d",&n); for(int a,b,i=1;i<=n;i++){ scanf("%d%d",&a,&b); adde(a,i); adde(b,i); } int cnt=0; for(int i=1;i<=n;i++){ tim++; if(dfs(i))cnt++; else break; } printf("%d",cnt); return 0; }