首页 > 代码库 > hdu1068 Girls and Boys,二分图最大独立集
hdu1068 Girls and Boys,二分图最大独立集
点击打开链接
二分图最大独立集 = 顶点数 - 最大匹配数
#include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxn = 1005; int g[maxn][maxn]; int n; int link[maxn]; bool used[maxn]; bool dfs(int u) { for(int v=0; v<n; ++v) if(g[u][v]&&!used[v]) { used[v] = true; if( link[v]==-1 || dfs(link[v])) { link[v] = u; return true; } } return false; } int hungary() { int res = 0; memset(link, -1, sizeof link ); for(int i=0; i<n; ++i) { memset(used, 0, sizeof used ); if(dfs(i)) res++; } return res; } int main() { int num, u, v; while(~scanf("%d", &n)) { memset(g, 0, sizeof g ); for(int i=1; i<=n; ++i) { scanf("%d: (%d)", &u, &num); for(int j=0; j<num; ++j) { scanf("%d", &v); g[u][v] = 1; } } int cnt = hungary(); printf("%d\n", n-cnt/2); } return 0; }
hdu1068 Girls and Boys,二分图最大独立集
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。