NYOJ 237 游戏高手的烦恼(二分图最小点集覆盖)

来源:互联网 发布:双程网络剧百度云资源 编辑:程序博客网 时间:2024/04/29 22:53

题目链接:http://59.69.128.200/JudgeOnline/problem.php?pid=237

解题思路:此题为二分图最小点集覆盖,二分图最小点集覆盖=二分图最大匹配

#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>#include<vector>using namespace std;const int M=510;int v[M];int t[M];vector<int> s[M];int fun(int x,int m){for(int i=0;i<s[x].size();i++){if(!v[s[x][i]]){v[s[x][i]]=1;if(t[s[x][i]]==0||fun(t[s[x][i]],m)){t[s[x][i]]=x;return 1;}}}return 0;}int main(){int N;scanf("%d",&N);while(N--){int m,n;scanf("%d%d",&m,&n);while(n--){int x,y;scanf("%d%d",&x,&y);s[x].push_back(y);}memset(t,0,sizeof(t));int sum=0;for(int i=1;i<=m;i++){memset(v,0,sizeof(v));if(fun(i,m))sum++;}for(int i=0;i<M;i++)s[i].clear();printf("%d\n",sum);}}


原创粉丝点击