50pts诡异的RE,求调
查看原帖
50pts诡异的RE,求调
1121439
TMLY114514楼主2024/3/24 18:36
#include<bits/stdc++.h>
using namespace std;
#define SIZE 1<<18
char ibuf[SIZE],*is=ibuf,*it=ibuf;
#define getchar() (is==it&&(it=(is=ibuf)+fread(ibuf,1,SIZE,stdin),is==it)?EOF:*is++)
inline void read(int &a){
	int x=0,y=0,ch=getchar();
	while(!isdigit(ch)&&ch!=EOF)y|=(ch=='-'),ch=getchar();
	while(isdigit(ch))x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
	a=y?-x:x;
}
int ans,n,m,fa[10010],tot;
struct edge{
	int u,v,t;
}e[10010];
inline bool cmp(edge a,edge b){
	return a.t<b.t;
}
inline int find(int x){
	return fa[x]=(fa[x]^x)?find(fa[x]):x;
}
inline void merge(int x,int y){
	fa[find(x)]=find(y);
}
int main(){
	read(n);read(m);
	for(int i=1;i<=n;++i)fa[i]=i;
	int x,y,t;
	for(int i=1;i<=m;++i){
		read(x);read(y);read(t);
		e[i]={x,y,t};
	}
	stable_sort(e+1,e+m+1,cmp);
	for(int i=1;i<=m;++i){
		int u=e[i].u,v=e[i].v;
		if(find(u)^find(v)){
			merge(u,v);
			++tot;
			ans=e[i].t;
			if(tot==n-1){
				printf("%d",ans);
				return 0;
			}
		}
	}
	puts("-1");
	return 0;
}
2024/3/24 18:36
加载中...