20pts求调(悲
查看原帖
20pts求调(悲
513005
GuoJZ2010楼主2023/11/26 09:50

先按时间排序,然后并查集合并,样例过不了(悲

#include<bits/stdc++.h>
using namespace std;
int fa[10100];
struct gl{
	int a;
	int b;
	int c;
}e[101000];
int cmp(gl l1,gl l2){
	return l1.c<l2.c;
}
int find(int x){
	while(x!=fa[x]) x=fa[x]=fa[fa[x]];
	return x;
}
int main(){
//	freopen("a.in","r",stdin);
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++) fa[i]=i;
	for(int i=1;i<=m;i++) cin>>e[i].a>>e[i].b>>e[i].c;
	sort(e+1,e+m+1,cmp);
	for(int i=1;i<=m;i++){
		int k=0;
		int x=find(e[i].a),y=find(e[i].b);
		fa[x]=y;
		for(int j=1;j<n;j++){
			if(fa[j]!=fa[j+1]){
				k=1;
				break;
			}
		}
		if(k==0){
			cout<<e[i].c<<endl;
			return 0;
		}
	}
	cout<<"-1"<<endl;
	return 0;
}
2023/11/26 09:50
加载中...