我要当月老

我要当月老

#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

猜你喜欢

转载自blog.csdn.net/qq_42866708/article/details/83385354