HDU 1054 Strategic Game(无向二分图的最大匹配)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 1054 Strategic Game(无向二分图的最大匹配)相关的知识,希望对你有一定的参考价值。
//凡无向图,求匹配时都要除以2 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<vector> using namespace std; const int MAXN=1505; int uN; vector<int> g[MAXN]; int link[MAXN]; bool vis[MAXN]; bool DFS(int u) { for(int i=0;i<g[u].size();i++) { int v=g[u][i]; if(!vis[v]) { vis[v]=1; if(link[v]==-1||DFS(link[v])) { link[v]=u; return true; } } } return false; } int hungary() { int res=0; memset(link,-1,sizeof(link)); for(int u=0;u<uN;u++) { memset(vis,0,sizeof(vis)); if(DFS(u)) res++; } return res; } int main() { int n,node,edge; while(~scanf("%d",&n)) { for(int i=0;i<n;i++) g[i].clear(); for(int i=0;i<n;i++) { scanf("%d:(%d)",&node,&edge); int to; for(int j=0;j<edge;j++) { scanf("%d",&to); g[node].push_back(to); g[to].push_back(node); } } uN=n; printf("%d\n",hungary()/2); } return 0; }
以上是关于HDU 1054 Strategic Game(无向二分图的最大匹配)的主要内容,如果未能解决你的问题,请参考以下文章