50pts求条(悬一关)
查看原帖
50pts求条(悬一关)
1273684
_std_O2楼主2025/1/18 16:16
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int choice[N],vis[N],n,m,e,ans=0;
vector<int> g[N];

int dfs(int x){
	for(int i=0;i<g[x].size();i++){
		if(vis[g[x][i]]) continue;
		vis[g[x][i]]=1;
		if(!choice[g[x][i]] || dfs(choice[g[x][i]])){
			choice[g[x][i]]=x;
			return 1;
		}
	}
	return 0;
}

int main(){
	cin>>n>>m>>e;
	for(int i=1;i<=m;i++){
		int u, v;
		cin>>u>>v;
		if(u>n || v>m) continue;
		g[u].push_back(v);
	}
	for(int i=1;i<=n;i++){
		memset(vis,0,sizeof(vis));
		ans+=dfs(i);
	}
	cout<<ans;
} 
2025/1/18 16:16
加载中...