UVa11419 SAM I AM(构造最小点覆盖)
2016-03-30 17:32
309 查看
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27475
【思路】
二分图的最小点覆盖以及构造最小覆盖。
二分图的最小点覆盖即在二分图中选出最少的点使能够将所有的边覆盖。构造思路是从所有未盖点出发拓展匈牙利树,X中的未标记点与Y中的已标记点为最小覆盖集。
具体可见:http://www.tuicool.com/articles/jmAnEb
【代码】
【思路】
二分图的最小点覆盖以及构造最小覆盖。
二分图的最小点覆盖即在二分图中选出最少的点使能够将所有的边覆盖。构造思路是从所有未盖点出发拓展匈牙利树,X中的未标记点与Y中的已标记点为最小覆盖集。
具体可见:http://www.tuicool.com/articles/jmAnEb
【代码】
#include<cstdio> #include<cstring> #include<vector> #include<iostream> using namespace std; const int maxn = 1000+10; bool S[maxn],T[maxn]; int lky[maxn],lkx[maxn]; vector<int> G[maxn]; bool match(int u) { S[u]=1; for(int i=0;i<G[u].size();i++) { int v=G[u][i]; if(!T[v]) { T[v]=1; if(!lky[v] || match(lky[v])) { lky[v]=u , lkx[u]=v; return true; } } } return false; } int n,m,k; void read(int& x) { char c=getchar(); while(!isdigit(c)) c=getchar(); x=0; while(isdigit(c)) { x=x*10+c-'0' , c=getchar(); } } int main() { while(scanf("%d%d%d",&n,&m,&k)==3 &&(n)) { for(int i=1;i<=n;i++) G[i].clear(); int u,v; for(int i=0;i<k;i++) { read(u),read(v); G[u].push_back(v); } memset(lky,0,sizeof(lky)); memset(lkx,0,sizeof(lkx)); int ans=0; for(int i=1;i<=n;i++) { memset(T,0,sizeof(T)); memset(S,0,sizeof(S)); if(match(i)) ans++; } printf("%d ",ans); memset(S,0,sizeof(S)); memset(T,0,sizeof(T)); for(int i=1;i<=n;i++) if(!lkx[i]) match(i); for(int i=1;i<=n;i++) if(!S[i]) printf("r%d ",i); for(int i=1;i<=n;i++) if(T[i]) printf("c%d ",i); putchar('\n'); } return 0; }
相关文章推荐
- UVAlive3415 Guardian of Decency(最大独立集)
- UVAlive3126 Taxi Cab Scheme(DAG的最小路径覆盖)
- 【爬虫】python 多线程知识
- 数据结构 - 简单的单链表结构
- Spring事务配置的五种方式
- 进程管理,及性能监控 ps, pstree, pidof, top, htop, pmap, vmstat, dstat
- Android进程间通信(IPC)常用方式
- IllegalStateException: Can not perform this action after onSaveInstanceState
- Ubuntu 14.04 文件服务器--samba的安装和配置
- 求解二叉树的深度(高度)_C语言
- 设计Qt风格的C++API
- UVaLive5031 Graph and Queries(时光倒流+名次树)
- UVA 11922 Permutation Transformer(Splay Tree)
- bzoj1588 [HNOI2002]营业额统计(Treap)
- bzoj3224 Tyvj 1728 普通平衡树(名次树+处理相同)
- bzoj3223 Tyvj 1729 文艺平衡树(Splay Tree+区间翻转)
- bzoj1251 序列终结者(Splay Tree+懒惰标记)
- bzoj1208 [HNOI2004]宠物收养所(STL,Treap)
- UVALive4513 Stammering Aliens(哈希法,后缀数组)
- bzoj1503 [NOI2004]郁闷的出纳员(名次树+懒惰标记)