比赛 202110省实验桐柏一中普及组联赛 评测结果 AAAAAAAAAA
题目名称 分配同桌 最终得分 100
用户昵称 佚名 运行时间 0.024 s
代码语言 C++ 内存使用 1.26 MiB
提交时间 2021-10-18 20:12:08
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int tot,co[10009]={0}/*1代表白,0代表黑*/,di[10009]={0}/*是否是点*/,n,m,ans=0,visit[10009]={0},match[10009]={0};
vector<int> edge[10009];
bool dfs(int x)
{
	for(int i=0;i<edge[x].size();i++)
	{
		int to=edge[x][i];
		if(visit[to]==0)
		{
			visit[to]=1;
			if(!match[to]||dfs(match[to]))
			{
				match[to]=x;
				return 1;
			}
		}
	}
	return 0;
}
int main()
{
    freopen("tongzhuo.in","r",stdin);
    freopen("tongzhuo.out","w",stdout);
	cin>>n>>m;
	int a,b;
	while(cin>>a>>b)
	{	
		co[a]=1;
		edge[a].push_back(b);
		edge[b].push_back(a);	
	}
	for(int i=1;i<=n;i++)
	{
		if(co[i]==1)
		{
			memset(visit,0,sizeof(visit));
			if(dfs(i))
			{
				ans++;
			}
		}
	}
	cout<<ans;
	return 0;
}