POJ - 1466 Girls and Boys 二分图+最大独立集
来源:互联网 发布:简明python教程 从哪买 编辑:程序博客网 时间:2024/06/15 13:21
题目大意:有n个学生,某些学生之间存在着一种特殊的关系。。。现在要找出m个学生,要求这m个学生之间的任意两人不存在这种特殊的关系
解题思路:二分图问题,因为没办法划分成相应的两个集合且特殊关系是对称的,所以可以将两个点集都设置为n个点,求出最大匹配后再除以2即可得到(因为关系是对称的,所以所求得的最大匹配是双倍的)
得到最大匹配了,可以由定理得到 最大独立集 = n - 最大匹配数
#include<cstdio>#include<vector>#include<cstring>using namespace std;const int N = 510;vector<int> s[N];int vis[N];int link[N];int n;bool dfs(int u) { for(int i = 0; i < s[u].size(); i++) { if(!vis[s[u][i]]) { vis[s[u][i]] = 1; if(link[s[u][i]] == -1 || dfs(link[s[u][i]])) { link[s[u][i]] = u; return true; } } } return false;}int main() { while(scanf("%d", &n) != EOF) { for(int i = 0; i < n; i++) s[i].clear(); int x, y, z; for(int i = 0; i < n; i++) { scanf("%d: (%d)", &x, &y); for(int j = 0; j < y; j++) { scanf("%d", &z); s[x].push_back(z); } } int ans = 0; memset(link, -1, sizeof(link)); for(int i = 0; i < n; i++) { memset(vis,0,sizeof(vis)); if(dfs(i)) ans++; } printf("%d\n", n - ans / 2); } return 0;}
0 0
- POJ-1466-Girls and Boys(二分图最大独立集)
- POJ 1466 Girls and Boys(二分图最大独立集)
- POJ 1466 Girls and Boys(二分图最大独立集)
- POJ 1466 Girls and Boys(二分图最大独立集)
- POJ 1466 Girls and Boys(二分图最大独立集)
- POJ - 1466 Girls and Boys 二分图+最大独立集
- poj 1466 Girls and Boys (二分图最大独立集)
- POJ 1466 Girls and Boys 最大独立集 二分图匹配
- POJ 1466 Girls and Boys(二分图匹配+拆点+最大独立集)
- 【二分图|最大点独立集】POJ-1466 Girls and Boys
- POJ 1466:Girls and Boys 二分图的最大点独立集
- POJ 1466 && ZOJ 1137--Girls and Boys【二分图 && 最大点独立集】
- poj 1466 Girls and Boys (最大独立)
- hdu Girls and Boys(二分图的最大独立集)
- ZOJ 1137 Girls and Boys(二分图最大独立集)
- hdu1068 Girls and Boys (二分图最大独立集)
- HDU1068-Girls and Boys(二分图_最大独立集)
- hdu1068 Girls and Boys,二分图最大独立集
- ARP 攻击防御
- 第十四周项目1(2)-小玩文件
- 《Java程序设计》第三次作业:网络编程
- MRC模式下的单例类
- 浅谈MySQL数据库优化
- POJ - 1466 Girls and Boys 二分图+最大独立集
- xmlHttpRequest的post方法
- 又见01背包
- 经典算法之归并排序的C实现方法
- 【Thinking in Java笔记】Java环境变量CLASSPATH
- 使用源码gcc-4.8.2安装c++编译器C++11
- 初次学习PHP总结
- Laravel 5 中使用ckfinder的问题。config.php设置。
- lucene 建立CRUD操作