萌新并查集60pts求调
查看原帖
萌新并查集60pts求调
324666
diqiuyi奶龙楼主2022/10/5 22:40
#include <bits/stdc++.h>
using namespace std;
inline int read(){
	int x=0;bool f=1;char c=getchar();
	while(c>'9'||c<'0'){if(c=='-')f=0;c=getchar();}
	while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+c-'0';c=getchar();}
	return f?x:-x;
}
struct ed{
	int u,v,w;
	bool operator<(ed x) const{
		return x.w<w;
	}
}a[100005];
int n,m,f[40005];
int find(int x){
	return (f[x]^x)?f[x]=find(f[x]):x;
}
int main(){
	n=read(),m=read();
	for(int i=1;i<=n;i++)
		f[i]=i;
	for(int i=1;i<=m;i++)
		a[i].u=read(),a[i].v=read(),a[i].w=read();
	sort(a+1,a+m+1);
	for(int i=1;i<=m;i++)
		if(find(a[i].u)==find(a[i].v)) return !printf("%d\n",a[i].w);
		else f[find(a[i].u)]=find(a[i].v+n),f[find(a[i].v)]=find(a[i].u+n);
	puts("0");
    return 0;
}
2022/10/5 22:40
加载中...