您的位置:首页 > 其它

cdoj 1144 二分图最大匹配.. 裸题

2015-10-02 19:53 274 查看
来一道裸题~
http://acm.uestc.edu.cn/#/problem/show/1144
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 220;
int uN,vN;
int g[MAXN][MAXN];
int linker[MAXN];
bool used[MAXN];
int match[MAXN];
bool dfs(int u){
for(int v=1; v<=vN; v++){
if(g[u][v]&&!used[v]){
used[v] = true;
if(linker[v] == -1 || dfs(linker[v])){
linker[v] = u;
return true;
}
}
}
return false;
}
int check(int st){
int res = 0;
memset(linker, -1, sizeof(linker));
for(int u=st; u<=uN; u++){
memset(used, false, sizeof(used));
if(dfs(u)) res++;
}
return res;
}
int main(){
int n,m;
cin>>n>>m;
uN = n, vN = m;
memset(g, 0, sizeof(g));
for(int i=1; i<=n; i++){
int a,b;
scanf("%d", &a);
while(a--){
scanf("%d", &b);
g[i][b] = 1;
}
}
int res = check(1);
cout<<res<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二分图匹配