51nod 2006 飞行员配对

题目链接https://www.51nod.com/onlineJudge/questionCode.html#!problemId=2006

二分图的最大匹配  水题

AC代码:

#include<bits/stdc++.h>>
using namespace std;
int n,k,m;
int map1[105][105];
int link[105],vis[105];
int find1(int x)
{
int i;
for(i=1;i<=m;i++)
{
if(map1[x][i]==1&&!vis[i])
{
vis[i]=1;
if(link[i]==0||find1(link[i]))
{
link[i]=x;
return 1;
}
}
}
return 0;
}
int main()
{
cin>>n>>m;
int a,b;
int c,d;
int s=0;
memset(link,0,sizeof(link));
while(cin>>a>>b&&(a!=-1||b!=-1))
{
map1[a][b]=1;
}
for(int i=1;i<=n;i++)
{
memset(vis,0,sizeof(vis));
if(find1(i))s++;
}
if(s)cout<<s<<endl;
else cout<<"No Solution!"<<endl;
}

posted @ 2017-08-16 14:57  sortmin  阅读(344)  评论(0编辑  收藏  举报