40pts求调
查看原帖
40pts求调
1351836
alvin007楼主2025/1/23 10:16
#include<bits/stdc++.h>
using namespace std;
#define maxn 12333345
vector<int> z[maxn];
int match[maxn],n,m,k; 
bool use[maxn]; 
bool dfs(int l){//O(边数)
	for(auto r:z[l]){
		if(use[r]==false){
			use[r]=true;
			if(match[r]==0||(match[r]!=0&&dfs(match[r]))){
				match[r]=l;
				return true;
			}	
		}
	}
	return false;
}

int main(){
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++){
		int l,r;
		cin>>l>>r;
		z[l].push_back(r);
	}
	int ans=0;
	for(int l=1;l<=n;l++){
		memset(use,false,sizeof(use));
		if(dfs(l)) ans++;
	} 
	cout<<ans<<'\n';
	return 0;
}
2025/1/23 10:16
加载中...