萌,零,求
查看原帖
萌,零,求
54372
A_Đark_Horcrux楼主2020/11/27 21:43
#include<cstdio>
#include<cstring>
using namespace std;
const int N=2010;
inline int read()
{
	int s=0; char c=getchar();
	while(c<'0'||c>'9') c=getchar();
	while(c>='0'&&c<='9') s=(s<<3)+(s<<1)+c-'0',c=getchar();
	return s;
}
int n,m,e,x,y,ans,match[N]; bool a[N][N],vis[N];
bool dfs(int now)
{
	for(int i=1;i<=m;i++)
		if(!vis[i]&&a[x][i])
		{
			vis[i]=1;
			if(!match[i]||dfs(match[i]))
				{match[i]=x; return 1;}
		}
	return 0;
}
int main()
{
	n=read(),m=read(),e=read();
	while(e--) x=read(),y=read(),a[x][y]=1;
	for(int i=1;i<=n;i++) ans+=dfs(i),memset(vis,0,sizeof(vis));
	printf("%d",ans);
	return 0;
}
2020/11/27 21:43
加载中...