-1
查看原帖
-1
1091688
Somnus_Love楼主2024/8/24 20:40
#include<bits/stdc++.h>
using namespace std;
int n,m;
int f[1005];
int ans=0;
int a[100005],b[100005],c[100005];
int find(int x)
{
	if(f[x]==x)
	{
		return 0;
	}
	return f[x]=find(f[x]);
}
void hb(int x,int y)
{
	int fx=find(x);
	int fy=find(y);
	f[fx]=fy;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		f[i]=i;
	}
	for(int i=1;i<=m;i++)
	{
		cin>>a[i]>>b[i]>>c[i];
	}
	for(int i=2;i<=m;i++)
	{
		if(c[i]<c[i-1])
		{
			int num=i;
			while(c[num]<c[num-1])
			{
				swap(c[num],c[num-1]);
				swap(b[num],b[num-1]);
				swap(a[num],a[num-1]);
				ans--;
			}
		}
	}
	for(int i=1;i<=m;i++)
	{
		if(find(a[i])!=find(b[i]))
		{
			ans=max(ans,c[i]);
			hb(a[i],b[i]);
		}
		int num=0;
		for(int i=1;i<=n;i++)
		{
			if(f[i]==i)
			{
				num++;
			}
		}
		if(num==1)
		{
			cout<<ans;
			return 0;
		}
	}
	cout<<-1;
	return 0;
}
2024/8/24 20:40
加载中...