[HDU2458] Kindergarten [2008 Asia Hefei Regional Contest Online C]
2016-07-26 09:31
453 查看
题意
有一堆男孩和女孩,男孩和男孩之间,女孩和女孩之间互相认识,给出一堆男孩女孩之间认识的关系,问最多能邀请几个人去party,(邀请人之间互相直接认识)。题解
最大团=补图最大独立集。补图显然为二分图,最大独立集就求一次最大匹配即可。代码
/****************************************\ * Author : ztx * Title : C - Kindergarten * ALG : er fen tu * CMT : g++ I64d * Time : \****************************************/ #include <cstdio> #define Rep(i,l,r) for(i=(l);i<=(r);i++) #define rep(i,l,r) for(i=(l);i< (r);i++) #define Rev(i,r,l) for(i=(r);i>=(l);i--) #define rev(i,r,l) for(i=(r);i> (l);i--) typedef long long ll ; typedef double lf ; int CH , NEG ; template <typename TP>inline void read(TP& ret) { ret = NEG = 0 ; while (CH=getchar() , CH<'!') ; if (CH == '-') NEG = true , CH = getchar() ; while (ret = ret*10+CH-'0' , CH=getchar() , CH>'!') ; if (NEG) ret = -ret ; } template <typename TP>inline void readc(TP& ret) { while (ret=getchar() , ret<'!') ; while (CH=getchar() , CH>'!') ; } template <typename TP>inline void reads(TP *ret) { ret[0]=0;while (CH=getchar() , CH<'!') ; while (ret[++ret[0]]=CH,CH=getchar(),CH>'!') ; ret[ret[0]+1]=0; } #include <cstring> #define maxn 210LL int kiss = 0 , G , B , M ; bool map[maxn][maxn] ; int xy[maxn] , yx[maxn] ; bool vis[maxn] ; bool find(int u) { int v ; for (v = 1 ; v <= B ; v ++ ) if (!vis[v] && !map[u][v]) if (vis[v] = true , !yx[v] || find(yx[v])) { yx[v] = u , xy[u] = v ; return true ; } return false ; } void solve() { int i , ans = 0 ; memset(xy , 0 , sizeof xy) ; memset(yx , 0 , sizeof yx) ; Rep (i,1,G) if (!xy[i]) { memset(vis , 0 , sizeof vis) ; ans += find(i) ; } printf("Case %d: %d\n", kiss , G+B-ans) ; } int main() { int i , j , u , v ; // #define READ #ifdef READ freopen(".in" ,"r",stdin ) ; freopen(".out","w",stdout) ; #endif while ( ++ kiss) { read(G) , read(B) , read(M) ; if (G+B+M == 0) break ; memset(map , 0 , sizeof map) ; Rep (i,1,M) read(u) , read(v) , map[u][v] = true ; solve() ; } #ifdef READ fclose(stdin) ; fclose(stdout) ; #else getchar() ; getchar() ; #endif return 0 ; }
相关文章推荐
- 修改显示 Preference summary 里的值, 显示Manifest 里的程序版本
- CSS高级技巧
- 十分钟玩转 jQuery、实例大全
- js获取当前时间,指定月份的第一天和最后一天
- css —— 选择器优先级及jQuery遍历元素常用方法
- JavaScript中的原型与继承
- 浅谈Javascript数据属性与访问器属性
- 廖雪峰JS教程学习记录---数组详解
- 十步图解CSS的position
- [HDU2456] Constellations [2008 Asia Hefei Regional Contest Online A]
- Transfer learning across two sentiment classes using deep learning
- React和Backbone优缺点
- 浅谈原生javascript的select操作
- HTML CSS特殊字符总结
- js判断空对象的实例(超简单)
- jQuery判断数组中是否包含某个元素$.inArray("js", arr);
- JQuery cxSelect联动下拉菜单
- 百度地图API的IP定位城市和浏览器定位(转)
- jQuery学习笔记一:简介
- JavaScript中的this