POJ 1463 ||HDU 1054 Strategic game(二分图最小顶点覆盖)
2016-02-24 11:21
555 查看
思路:直接跑一个KM,最后答案/2
#include<map> #include<queue> #include<cmath> #include<iostream> #include<cstdio> #include<stack> #include<cstring> #include<algorithm> #define LL __int64 #define inf 0x3f3f3f3f const double PI=acos(-1.0); using namespace std; int cro[20000],head[20000],cnt; bool vis[20000]; struct node{ int to,next; }q[200000]; void bu(int k,int t){ q[cnt].to=t; q[cnt].next=head[k]; head[k]=cnt++; q[cnt].to=k; q[cnt].next=head[t]; head[t]=cnt++; } bool dfs(int u){ for(int i=head[u];~i;i=q[i].next){ int v=q[i].to; if(vis[v]) continue; vis[v]=true; if(cro[v]==-1||dfs(cro[v])){ cro[v]=u; return true; } } return false; } int main(){ int i,j,n,m,k,t; while(~scanf("%d",&n)){ memset(head,-1,sizeof(head)); cnt=0; for(i=0;i<n;++i){ scanf("%d:(%d)",&k,&m); while(m--){ scanf("%d",&t); bu(k,t); } } int ans=0; memset(cro,-1,sizeof(cro)); for(i=0;i<n;++i){ memset(vis,false,sizeof(vis)); if(dfs(i)) ans++; } printf("%d\n",ans/2); } return 0; } //2 //1:(1) 0 //0:(1) 1
相关文章推荐
- Bad Horse - Practice Round China New Grad Test 2014 - BFS - 二分图判定
- hdu 1281 二分图匹配求匹配边以及增广链
- 二分图不带权匹配
- Codeforce 85E (二分答案+二分图染色)
- 无向图的最小边覆盖
- Hdu2063—过山车 二分图最大匹配
- Codeforces498C解题报告
- poj_3041
- uva 1201
- uva12083
- hdu 2255
- [Usaco2011 Nov]Cow Steeplechase奶牛越野跑(二分图裸题)
- hdu2603
- hdu4619
- 匈牙利算法
- POJ2446 CHESSBOARD
- POJ 2112 (二分图多重匹配)
- uva10004 Bicoloring 二分图染色
- poj 1325 最小顶点覆盖
- poj 2446 二分图最大匹配 匈牙利算法