POJ 1466 Girls and Boys(匈牙利算法—最大独立集)
来源:互联网 发布:市网络技能大赛心得 编辑:程序博客网 时间:2024/06/10 03:39
题目链接:POJ 1466 Girls and Boys
最大独立集问题:在N个点的图G中选出m个点,使这m个点两两之间没有边(没有某种关系).求m最大值.如果图G满足二分图条件,则可以用二分图匹配来做.最大独立集点数 = N - 最大匹配数。
最大独立集与最小点覆盖是互补的,证明见白书。
这个题没有说明哪个是男哪个是女,所以又是构造无向图,之前做过一个类似的,基站那个题,最后匹配数是MaxMatch() / 2,答案就是n - MaxMatch() / 2。
这次试一下邻接表。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAX_N = 500 + 20;struct Edge{ int v, next;};Edge edge[MAX_N * (MAX_N - 1)];int head[MAX_N], n, cnt;bool vis[MAX_N], _map[MAX_N][MAX_N];int link[MAX_N];void addEdge(int u, int v){ edge[cnt].v = v; edge[cnt].next = head[u]; head[u] = cnt++;}bool DFS(int u){ int v; for(int i = head[u]; i != -1; i = edge[i].next) { v = edge[i].v; if(!vis[v]) { vis[v] = true; if(link[v] == -1 || DFS(link[v])) { link[v] = u; return true; } } } return false;}int MaxMatch(){ int ans = 0; memset(link, -1, sizeof(link)); for(int i = 0; i < n; i++) { memset(vis, 0, sizeof(vis)); if(DFS(i)) ans++; } return ans;}int main(){ while(scanf("%d", &n) != EOF) { cnt = 0; memset(_map, 0, sizeof(_map)); memset(head, -1, sizeof(head)); int u, v, num; for(int i = 0; i < n; i++) { scanf("%d: (%d)", &u, &num); for(int j = 0; j < num; j++) { scanf("%d", &v); addEdge(u, v); } } printf("%d\n", n - MaxMatch() / 2); } return 0;}
0 0
- POJ 1466 Girls and Boys (匈牙利算法 最大独立集)
- POJ 1466 Girls and Boys(匈牙利算法—最大独立集)
- hdu 1068 zoj 1137 poj 1466 Girls and Boys(二分图匹配 匈牙利算法 最大独立集)
- poj 1466 Girls and Boys (最大独立)
- 【hdu 1068 Girls and Boys 最大独立集数 匈牙利算法 】
- 【HDU1068】Girls and Boys(最大独立集数,匈牙利算法)
- POJ 1466 Girls and Boys (最大独立集Hungary)
- pku(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 && hdu 1068Girls and Boys(最大独立集)
- POJ 1466 Girls and Boys(二分图最大独立集)
- POJ 1466 Girls and Boys(最大独立点集)
- POJ 1466 Girls and Boys(最大独立集)
- STM32固件库详解
- CSS 简单设置
- POJ 1141 Brackets Sequence
- Cocos2d-x场景生命周期函数介绍
- 最大公约数gcd(m,n)=gcd(n,m%n)之证明
- POJ 1466 Girls and Boys(匈牙利算法—最大独立集)
- gprs dtu发送中文短信
- 解决ubuntu 64bit AndroidStudio中的SDK无法使用的问题
- redis缓存的安装和使用
- 云计算,移动云计算,虚拟化技术概念以及相关技术注解
- java.io.FileNotFoundException: /home/hadoop/hadoop/dfs/namenode/current/VERSION (Permission denied)
- 【一图解读】甜粽子VS咸粽子 你吃哪个?
- 第 3 章 单例模式
- Spring + Struts + Hibernate联合开发(多对一关系)