二分图
Posted littlerita
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分图相关的知识,希望对你有一定的参考价值。
过山车
分析匈牙利算法,其实就是找得到就匹配,找不到这个点换一下看看能不能匹配;
#include<bits/stdc++.h> using namespace std; #define pb push_back const int N=6e2+5; vector<int>e[N]; int match[N]; bool vis[N]; bool findpath(int u){ for(int i=0;i<e[u].size();i++){ int v=e[u][i]; if(!vis[v]){ vis[v]=1; if(!match[v]||findpath(match[v])){ match[v]=u; return 1; } } } return 0; } int main(){ int k,m,n; while(~scanf("%d",&k),k){ scanf("%d %d",&m,&n); for(int i=0;i<=N;i++)match[i]=0,e[i].clear(); // girl.clear(); for(int i=1,u,v;i<=k;i++){ scanf("%d %d",&u,&v);e[u].pb(v); // girl.pb(u); } int ans=0; for(int i=1;i<=m;i++){ memset(vis,0,sizeof vis); if(findpath(i))ans++; } // cout<<"test"<<endl; printf("%d ",ans); } // system("pause"); return 0; }
以上是关于二分图的主要内容,如果未能解决你的问题,请参考以下文章