我要当月老
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int e[101][101];
int match[101];
int book[101];
int n,m;
int dfs(int u)
{
int i;
for(i=1;i<=n;i++)
{
if(book[i]==0&&e[u][i]==1)
{
book[i]=1;
if(match[i]==0||dfs(match[i]))
{
match[i]=u;
return 1;
}
}
}
return 0;
}
int main(){
int t1,t2,sum=0;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>t1>>t2;
e[t1][t2]=1;
}
for(int i=1;i<=n;i++)
match[i]=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
book[j]=0;
}
if(dfs(i))
sum++;
}
cout<<sum;
return 0;
}
输入 |
输出 |
3 5 |
|
1 1 |
|
1 2 |
|
2 2 |
|
2 3 |
|
3 1 |
3 |