链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=2006
思路:
二分匹配 注意n m的关系
代码:
#include <iostream>
#include <string.h>
using namespace std;
int g[][],vis[],who[];
int n,m;
bool find(int x) {
for(int i=m+; i<=n; ++i) {
if(g[x][i]&&!vis[i]) {
vis[i]=;
if(!who[i]||find(who[i])) {
who[i]=x;
return true;
}
}
}
return false;
}
int main() {
ios::sync_with_stdio(false);
memset(g,,sizeof(g));
memset(who,,sizeof(who));
int u,v,sum;
cin>>m>>n;
while(cin>>u>>v) {
if(u==-&&v==-) break;
g[u][v]=;
}
sum=;
for(int i=; i<=m; ++i) {
memset(vis,,sizeof(vis));
if(find(i)) sum++;
}
cout<<sum<<endl;
return ;
}