POJ1426 最小独立点集
2011-09-16 21:07
141 查看
这道题就是说一堆人有男有女....有些男女之间会有好感( romantically involved .... 有基佬吐槽男男之间也能有好感...无视!!这题就是男的对女的才有...也就是图就是个二分图...)...有好感的男女不能分在一起....问最后能分在一起的人数最多是多少..
这道题一看就想到二分图...但我就是因为对最小独立点集的性质以及与最小点覆盖的关系不清楚...导致卡了蛮久...后来去找了资料才明白...最小独立点集 = 顶点数 - 最小点覆盖数...又最小点覆盖 = 最大匹配数...so...
最小独立点集 = 顶点数 - 最大匹配数
这道题一看就想到二分图...但我就是因为对最小独立点集的性质以及与最小点覆盖的关系不清楚...导致卡了蛮久...后来去找了资料才明白...最小独立点集 = 顶点数 - 最小点覆盖数...又最小点覆盖 = 最大匹配数...so...
最小独立点集 = 顶点数 - 最大匹配数
#include<iostream> #define MAXN 510 using namespace std; int n,match[MAXN]; bool map[MAXN][MAXN],used[MAXN]; int input() { int data=0; char c; while (c<'0' || c>'9') c=getchar(); while (c>='0' && c<='9') { data=data*10+c-'0'; c=getchar(); } return data; } bool ok(int num) { int i; for (i=0;i<n;i++) if (!used[i] && map[num][i]) { used[i]=true; if (match[i]==-1 || ok(match[i]) ) { match[i]=num; return true; } } return false; } int main() { while (~scanf("%d",&n)) { int i,h,p,k; memset(map,false,sizeof(map)); for (i=0;i<n;i++) { h=input(); k=input(); while (k--) { p=input(); map[h][p]=true; } } memset(match,-1,sizeof(match)); k=0; for (i=0;i<n;i++) { memset(used,false,sizeof(used)); if (ok(i)) k++; } printf("%d\n",(2*n-k)/2); } return 0; }
相关文章推荐
- 最小路径覆盖,最小点覆盖,最大独立点集
- hdu 1565 方格取数(1)(最小割--最大权独立点集)
- 【网络流24题】方格取数(二分图染色+最大权独立点集+最小割)
- 最小路径覆盖,最小点覆盖,最大独立点集
- 最小路径覆盖,最小点覆盖,最大独立点集(转)
- hdu 3657 Game【最大权独立点集------最大流最小割Dinic】
- 关于二分图匹配的基本应用的一些见解(最大独立点集、最小点覆盖、最小路径覆盖)
- 最小路径覆盖,最小点覆盖,最大独立点集
- 最小路径覆盖,最小点覆盖,最大独立点集,最小边覆盖
- 点集最小外接矩算法
- poj 2516 Minimum Cost 【最小费用最大流】【求解K种物品的最小费用,独立求解累加每个结果】
- POJ 1466 Girls and Boys (ZOJ 1137 )最大独立点集
- 点连通度 边连通度 最大流最小割 最小割点集 最小割边集 & POJ 1966 Cable TV Network
- zoj - 1137 - Girls and Boys(二分图最大独立点集)
- 最小点权覆盖集&最大点权独立集
- 证明二分图最小点集覆盖=二分图最大匹配
- HDU 5251-矩形面积(点集的最小面积包围矩形)
- ZJU 1450 Minimal Circle(平面点集最小圆覆盖)
- 1134. Vertex Cover (25)(最小点集覆盖)
- 二分图最大匹配的König定理-最小点集覆盖【Matrix67】