克鲁斯卡尔10分求助 救救我救救我(扭曲)(蠕动)(阴暗的爬行)
查看原帖
克鲁斯卡尔10分求助 救救我救救我(扭曲)(蠕动)(阴暗的爬行)
498360
Leonard_Mitchell楼主2023/8/15 16:56

rt,只对了#10

#include<iostream>
#include<queue>
#include<algorithm>

using namespace std;

const int N=1e4+5;

int n,m,s,t;
struct str{
	int u,v,w;
}edge[2*N];
int fa[N];
int sum,cnt;

bool cmp(str a,str b){
	return a.w<b.w;
}

int find(int a){
	if(fa[a]==a)return a;
	return fa[a]=find(fa[a]);
}

void klskr(){
	for(int i=1;i<=m;i++){
		int fau=find(edge[i].u),fav=find(edge[i].v);
		if(fau==fav) continue;
		fa[fau]=fav;
		if(find(s)==find(t)){
			cout<<edge[i].w;
			return ;
		}
	}
}

int main(){
	cin>>n>>m>>s>>t;
	for(int i=1;i<=n;i++) fa[i]=i;
	for(int i=1;i<=m;i++){
		cin>>edge[i].u>>edge[i].v>>edge[i].w;
	}
	sort(edge+1,edge+1+n,cmp);
	klskr();
}
2023/8/15 16:56
加载中...