首页 > 代码库 > poj 3692 Kindergarten,二分图的最大团
poj 3692 Kindergarten,二分图的最大团
最大独立集 = V - 最小顶点覆盖
二分图的最小顶点覆盖数 = 最大匹配数
最大团 = 补图的最大独立集
#include <cstdio> #include <cstring> #include <algorithm> #include <stack> #include <vector> #include <queue> using namespace std; const int maxn = 200 + 10; int n, m, s; int map[maxn][maxn], vis[maxn], link[maxn]; int dfs(int u) { for(int i=1; i<=m; ++i) { if(vis[i]==0 && map[u][i]) { vis[i] = 1; if(link[i]==-1||dfs(link[i])) { link[i] = u; return 1; } } } return 0; } int Max_Match() { int res = 0; memset(link, -1, sizeof link ); for(int i=1; i<=n; ++i) { memset(vis, 0, sizeof vis ); if(dfs(i)) res++; } return res; } int main() { int x, y, t = 1; while(~scanf("%d%d%d", &n, &m, &s)) { if(n==0&&m==0&&s==0) break; memset(map, 1, sizeof map ); for(int i=0; i<s; ++i) { scanf("%d%d", &x, &y); map[x][y] = 0; } printf("Case %d: %d\n",t++, n+m-Max_Match()); } return 0; }
poj 3692 Kindergarten,二分图的最大团
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。