poj3692二分图最大团

来源:互联网 发布:淘宝灯具安装联盟 编辑:程序博客网 时间:2024/05/16 23:39
/*************************************************************************> File Name: poj3692.cpp> Author: flyasdfvcxz> Mail: flyasdfvcxz.com > Created Time: 2014年08月03日 星期日 10时55分57秒 ************************************************************************/#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cctype>#include<cstdlib>#include<ctime>#include<cmath>#include<string>#include<set>#include<vector>#include<map>#include<queue>#include<stack>#include<iomanip>using namespace std;#define N 222#define ll long longconst int inf=~0U>>1;const double eps=1e-6;int nx,ny,m;int vis[N][N],v[N],linky[N];void input(){memset(vis,0,sizeof(vis));for(int i=1;i<=m;i++){int a,b;scanf("%d%d",&a,&b);vis[a][b]=1;}}int find(int rt){for(int i=1;i<=ny;i++)if(!vis[rt][i] && !v[i]){v[i]=1;if(linky[i]==-1 || find(linky[i])){linky[i]=rt;return 1;}}return 0;}void solve(int cas){int ans=0;memset(linky,-1,sizeof(linky));for(int i=1;i<=nx;i++){memset(v,0,sizeof(v));ans+=find(i);}ans=nx+ny-ans;printf("Case %d: %d\n",cas,ans);}int main(){int cas=0;while(cin>>nx>>ny>>m){if(nx==0 && ny==0 && m==0)break;input();solve(++cas);}return 0;}

0 0
原创粉丝点击