匈牙利
#include<bits/stdc++.h>
using namespace std;
int b,n,t;
const int M=209;
int v[M],g[M][M],m[M];
int dfs(int x)
{
for(int i=1;i<=b;i++)
{
if(g[x][i] || v[i])continue;
v[i]=1;
if(dfs(m[i]) || !m[i])
{
m[i]=x;
return 1;
}
}
return 0;
}
int main()
{
cin>>n>>b>>t;
for(int i=1;i<=t;i++)
{
int x,y;
cin>>x>>y;
g[x][y]=1;
}
int ans=0;
for(int i=1;i<=n;i++)
{
memset (v,0,sizeof(v));
if(dfs(i))ans++;
}
cout<<ans;
}
作者:ruanmowen
链接:https://www.acwing.com/activity/content/code/content/275964/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。