HDU 3829Cat VS Dog
来源:互联网 发布:域名投资的秘密电子书 编辑:程序博客网 时间:2024/06/05 09:12
有p个小朋友参观动物园,动物园里面有两种动物,分别为猫和狗。规定一个小朋友喜欢猫就讨厌狗,喜欢狗就讨厌猫。
现在管理员要移走0一些动物,当然,移走也是有条件的。比如一个小朋友喜欢猫3,讨厌狗4.那么移走狗4,这个小朋友就会非常开心。同样,如果移走猫3,小朋友就会很不高兴。现在问怎么样才能使开心的小朋友的人数最多
二分图最大独立集
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#define rep(i, j, k) for(int i = j; i <= k; i++)using namespace std;int n, m, k, edge[509][509], done[509], link[509], f[1009][3];bool dfs (int x){ rep (i, 1, n) if (!done[i] && edge[x][i]) { done[i] = 1; if (link[i] == -1 || dfs (link[i])) { link[i] = x; return 1; } } return 0;}int solve (){ int ret = 0; rep (i, 1, n) { memset (done, 0, sizeof (done)); if (dfs (i)) ret++; } return ret;}int main (){ while (scanf ("%d%d%d", &m, &k, &n) == 3) { memset (link, -1, sizeof (link)); memset (edge, 0, sizeof (edge)); memset (f, 0, sizeof (f)); rep (i, 1, n) { rep (j, 1, 2) { getchar (); char now = getchar (); scanf ("%d", &f[i][j]); if (now == 'D') f[i][j] += m; } } //rep (i, 1, n) printf ("%d === %d\n", f[i][1], f[i][2]); rep (i, 1, n) rep (j, 1, n) if (f[i][2] == f[j][1] || f[i][1] == f[j][2]) edge[i][j] = edge[j][i] = 1; //rep (i, 1, n) rep (j, 1, n) if (edge[i][j]) printf ("edge %d %d\n", i, j); cout << n - solve () / 2 << endl; } return 0;}
0 0
- hdu 3829 Cat VS Dog
- HDU-3829 Cat VS Dog
- HDU 3829 CAT VS DOG
- HDU 3829 Cat VS Dog
- HDU 3829 Cat VS Dog
- HDU-3829 Cat VS Dog
- HDU 3829 Cat VS Dog
- 【HDU】 3829 Cat VS Dog
- HDU 3829 Cat VS Dog
- HDU 3829Cat VS Dog
- Cat VS Dog HDU
- HDU/HDOJ 3829 Cat VS Dog
- hdu 3829 Cat VS Dog 二分匹配
- HDU 2768 Cat vs. Dog
- HDU 2768 Cat vs. Dog
- hdu 3829 cat&dog
- HDOJ 3829 Cat VS Dog
- HDU 3829 Cat VS Dog(最大独立集)
- 对于所有对象都通用的方法
- 从零开始写C# MVC框架之--- 配置log4日志
- python常用处理
- PB中嵌入式SQL语句技巧1
- Collator类详解(Collections.sort 中文排序)
- HDU 3829Cat VS Dog
- 软件工程之概述
- Gulp入门教程
- 线程间通信、等待/唤醒机制的使用
- 算法竞赛入门经典 1 实验
- 2016 大连网络赛 HDU 5874 Friends and Enemies【思维】
- base64加密原理详解
- 非信任机构的https证书,afnetworking 会报错解决办法:
- 剑指offer - 面试题3:二维数组中的查找