匈牙利算法wa#2
查看原帖
匈牙利算法wa#2
1345977
q123456789we楼主2024/12/29 09:10
#include<bits/stdc++.h>
using namespace std;
int G[510][510];
int match[510],reverse_boy[510];
int n,m;
bool dfs(int x){
	for(int i=1;i<=n;i++)
		if(!reverse_boy[i]&&G[x][i]){
			reverse_boy[i]=1;
			if(!match[i]||dfs(match[i])){
				match[i]=x;
				return true;
			}
		}
	return false;
}
int main(){
	int e;scanf("%d%d%d",&n,&m,&e);
	while(e--){int a,b;scanf("%d%d",&a,&b);G[a][b]=1;}
	int sum=0;
	for(int i=1;i<=n;i++){
		memset(reverse_boy,0,sizeof(reverse_boy));
		if(dfs(i))sum++;
	}
	printf("%d\n",sum);
	return 0;
}
2024/12/29 09:10
加载中...