10pts 不知道哪里错了。
查看原帖
10pts 不知道哪里错了。
368749
Lancer__楼主2021/11/14 19:13

应该不用写注释吧。。。

#include<bits/stdc++.h>
#define N
#define ll long long
#define re register
#define in inline
using namespace std;

in int read()
{
   re int s=0,w=1;char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
   while(ch>='0'&&ch<='9')s=s*10+ch-'0',ch=getchar();
   return s*w;
}

int n,m,x,y,ti,cnt,ltk,a[100100],fa[10010];

struct ed{
	int u,v,t;
}edge[100010];

queue<ed> q;

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

void hb(int x,int y){fa[find(x)]=find(y);}

bool cmp(ed a,ed b) {return a.t<b.t;}

int main()
{
	
	n=read(),m=read();
	
	ltk=n;
	
	for(int i=1;i<=n;i++) fa[i]=i;
	
	for(int i=1;i<=m;i++) edge[i].u=read(),edge[i].v=read(),edge[i].t=read();

	sort(edge+1,edge+m+1,cmp); 
	
	for(int i=1;i<=m;i++)
	{
		int fx=find(edge[i].u),fy=find(edge[i].v);
		if(fx!=fy) hb(x,y),ltk--;
		if(ltk==1) 
		{
			cout<<edge[i].t;
			return 0;
		}
	}
	
    cout<<-1;
    
    return 0;
}
2021/11/14 19:13
加载中...