【图论】【二分图匹配】[POJ 3692]Kindergarten
来源:互联网 发布:ff14暗战数据 编辑:程序博客网 时间:2024/05/13 11:53
首先我们要求的是一个完全图,那么因为男生之间互相认识,女生之间互相认识,那么我们只考虑男生和女生认识的情况,我们要选择一个大家都互相认识的出来,那么做当前图的补图可以发现如果两个点之间有直接关系,那么这两个点一定是互相不认识的,如果没有,那么一定是认识的,所以选出的点在当前图中不能互相接触,那么求得就是二分图的最大独立集那么
#include <cstdio>#include <cstring>#include <algorithm>//#include <conio.h>#include <iostream>#include <vector>using namespace std;const int MAXN = 400;bool vis[MAXN+10];int con[MAXN+10];int endcnt;int n, m, k, Tcnt;struct node{ int v; node *next;}Edges[MAXN * MAXN * 2+10], *adj[MAXN+10], *ecnt=Edges;void addedge(int u, int v){ ++ecnt; ecnt->v = v; ecnt->next = adj[u]; adj[u] = ecnt;}bool dfs(int u){ for(node *p=adj[u];p;p=p->next){ if(!vis[p->v]){ vis[p->v] = true; if(con[p->v]==-1 || dfs(con[p->v])){ con[u] = p->v; con[p->v] = u; return true; } } } return false;}void work(){ int ret = 0; memset(con, -1, sizeof con); for(int i=endcnt;i>=1;i--) if(con[i] == -1){ memset(vis, 0, sizeof vis); ret += dfs(i); //if(ret == n) break; } printf("Case %d: %d\n", ++Tcnt, n+m-ret);}bool Map[MAXN+5][MAXN+5];bool read(){ memset(Map, 0, sizeof Map); int t1, t2; scanf("%d%d%d", &n, &m, &k); if(!n && !m && !k) return false; for(int i=1;i<=k;i++){ scanf("%d%d", &t1, &t2); Map[t1][t2] = true; } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(!Map[i][j]){ addedge(i, j+n); addedge(j+n, i); } } } endcnt=n; return true;}int main(){ while(read()){ work(); memset(adj, 0, sizeof adj); ecnt=Edges; } return 0;}
0 0
- 【图论】【二分图匹配】[POJ 3692]Kindergarten
- POJ - 3692 Kindergarten 二分图 最大匹配
- poj 3692 Kindergarten 二分匹配
- poj 3041Asteroids+3692Kindergarten(二分图匹配+公式补充)
- poj 3692 Kindergarten(二分图匹配,最大独立集)
- poj 3692 Kindergarten(最大团,二分图匹配)
- poj 3692Kindergarten(二分匹配模板)
- POJ 3692Kindergarten(二分图最大匹配之最小顶点匹配)
- poj 3692 Kindergarten(二分匹配,最大独立集)
- 【二分图+技巧性】北大 poj 3692 Kindergarten
- POJ 3692 Kindergarten (匈牙利 二分图)
- POJ 3692 Kindergarten (二分图 最大团)
- POJ 3692 Kindergarten(二分图)
- poj 3692 Kindergarten(最大独立点集 + 二分图最大匹配)
- hdu 2458 二分图匹配 Kindergarten
- 【二分匹配】 hdu2458 Kindergarten
- poj 3692 二分图最大独立集 Kindergarten
- poj 3692 Kindergarten 二分图 最大独立集
- Java中反射与正则小结
- 数据结构——链表操作(电话管理系统 )
- [Windows]在Win7系统下搭建Eclipse+Cygwin开发环境
- iOS开发实现页面的跳转与返回
- android pull解析xml最简单的方法
- 【图论】【二分图匹配】[POJ 3692]Kindergarten
- 【问题及解决】Elasticsearch不能正常启动do not exists on master, act as master failure
- hdu1509 Windows Message Queue
- 在子进程中调用exit()函数对标准I/O流的影响
- HDU 2844:Coins(多重背包)
- 关于android和tomcat
- GID SID AID HID
- Linux Shell 之 Shell中的函数调用
- SQL注入学习笔记(一)