问匈牙利算法能卡过去吗?
查看原帖
问匈牙利算法能卡过去吗?
948995
Yurinaxu楼主2024/6/13 16:37

RT

#include<bits/stdc++.h>
using namespace std;
int n,m,e,x,y,vis[1000005],pd[1000005],sum;
vector<int> v[1000005];
int dfs(int k){
	int len=v[k].size();
	vis[k]=1;
	for(int i=0;i<len;i++){
		if(pd[v[k][i]]==0){
			pd[v[k][i]]=k;
			return 1;
		}
		if(vis[pd[v[k][i]]]==0 && dfs(pd[v[k][i]])){
			pd[v[k][i]]=k;
			return 1;
		}
	}
	return 0;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>x>>y;
		v[x].push_back(i);
		v[y].push_back(i);
	}
	for(int i=1;;i++){
		memset(vis,0,sizeof(vis));
		if(dfs(i)){
			sum++;
		}
		else{
			break;
		}
	}
	cout<<sum;
	return 0;
}

50分TLE

2024/6/13 16:37
加载中...