博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj3692
阅读量:6252 次
发布时间:2019-06-22

本文共 1434 字,大约阅读时间需要 4 分钟。

最大独立集,把不认识的男女看成是有矛盾的,要选出一些互相没有矛盾的男女。

View Code
#include 
#include
#include
#include
using namespace std;#define maxn 205bool g[maxn][maxn];int uN, vN, m;int xM[maxn], yM[maxn];bool chk[maxn];void input(){ for (int i = 0; i < m; i++) { int a, b; scanf("%d%d", &a, &b); g[--a][--b] = true; } for (int i = 0; i < uN; i++) for (int j = 0; j < vN; j++) g[i][j] = !g[i][j];}bool SearchPath(int u){ int v; for (v = 0; v < vN; v++) if (g[u][v] && !chk[v]) { chk[v] = true; if (yM[v] == -1 || SearchPath(yM[v])) { yM[v] = u; xM[u] = v; return true; } } return false;}int MaxMatch(){ int u, ret = 0; memset(xM, -1, sizeof(xM)); memset(yM, -1, sizeof(yM)); for (u = 0; u < uN; u++) { if (xM[u] == -1) { memset(chk, false, sizeof(chk)); if (SearchPath(u)) ret++; } } return ret;}int main(){ //freopen("t.txt", "r", stdin); int t = 0; while (scanf("%d%d%d", &uN, &vN, &m), uN | vN | m) { t++; memset(g, 0, sizeof(g)); input(); printf("Case %d: %d\n", t, uN + vN - MaxMatch()); } return 0;}

转载于:https://www.cnblogs.com/rainydays/archive/2012/07/06/2578868.html

你可能感兴趣的文章
HDU2647 拓扑排序
查看>>
ThinkPHP/---微信支付PC流程
查看>>
JavaScript 05
查看>>
python 多线程编程之threading模块(Thread类)创建线程的三种方法
查看>>
实验三
查看>>
水仙花数
查看>>
P3308 [SDOI2014]LIS(最小割+退流)
查看>>
C语言作业--数据类型
查看>>
压位高精
查看>>
jsp 中对jar 包的引用
查看>>
python操作mysql数据库
查看>>
Yii: gii 403 Error you are not allowed to access this page
查看>>
计算汉字长度
查看>>
Codeforces 911E - Stack Sorting
查看>>
BZOJ 1853: [Scoi2010]幸运数字
查看>>
基于敏捷的测试交付物通用设计
查看>>
BFS --- 素数环
查看>>
for循环每次取出一个字符(不是字节)
查看>>
linux版本选择
查看>>
不写for也能选中checkbox!
查看>>