HDU【2458】Kindergarten

阅读: 评论:0

HDU【2458】Kindergarten

HDU【2458】Kindergarten

题目链接:.php?pid=2458
分析
这道题求的是最大团,同时它符合二分图的定义,可以用匈牙利算法求出该图的补图的最大的匹配数,最大团就等于该补图的顶点数减去最大的匹配数。
具体的关系如下:
二分图的最大团 = 补图的最大独立集 = 补图的顶点数 - 补图的最大匹配数

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N = 200 + 10;
int a[N][N],vis[N],match[N];
int g,b,m;
bool find(int i)
{for(int j = 1; j <= b; j++) {if(!vis[j] && !a[i][j]) {vis[j] = 1;if(match[j] == 0 || find(match[j])) {match[j] = i;return true;}}}return false;
}
int main()
{int T = 0;while(scanf("%d%d%d",&g,&b,&m) && (g + b + m)) {T++;memset(match,0,sizeof(match));memset(a,0,sizeof(a));int u,v;for(int i = 0; i < m; i++) {scanf("%d%d",&u,&v);a[u][v] = 1;}int ans = 0;for(int i = 1; i <= g; i++) {memset(vis,0,sizeof(vis));if(find(i)) ans++;}printf("Case %d: %dn",T,g + b - ans);}return 0;
}

本文发布于:2024-01-27 16:36:44,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063446001461.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:HDU   Kindergarten
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23