数据测试1正确,却WA???
查看原帖
数据测试1正确,却WA???
118184
In_blue楼主2020/5/6 12:33

Code:

#include<bits/stdc++.h>
using namespace std;
inline long long read()
{
	int a=0,b=1;
	char c=getchar();
	while(c>'9'&&c<'0'){if(c=='-')b=-1;c=getchar();}
	while(c>='0'&&c<='9'){a=(a<<3)+(a<<1)+(c^48);c=getchar();}
	return a*b;
}
inline void write(long long a)
{
	if(a<0){putchar('-');a=-a;}
	if(a>10)write(a/10);
	putchar(a%10+48);
	return;
}
struct node{
	int x,y,t;
}lu[100000];
int bcj[100010];
int n=read(),m=read();
bool cmp(node a,node b){return a.t<b.t;}
int find(int x)
{
    if(x!=bcj[x])return bcj[x]=find(bcj[x]);
    return bcj[x]=x;
}
bool pd()
{
	int a=find(1);
	for(int i=2;i<=n;i++)
	{
		if(find(i)!=a)return 0;
	}
	return 1;
}
int main()
{
	for(int i=1;i<=m;i++)
	{
		lu[i].x=read();
		lu[i].y=read();
		lu[i].t=read();
		bcj[i]=i;
	}
	sort(lu+1,lu+1+m,cmp);
/*	puts("");
	for(int i=1;i<=m;i++)
	{
		write(lu[i].x);
		putchar(' ');
		write(lu[i].y);
		putchar(' ');
		write(lu[i].t);
		puts("");
	}*/
	for(int i=1;i<=m;i++)
	{
		int a=find(lu[i].x),b=find(lu[i].y);
		if(a!=b)
		{
			bcj[a]=b;
			if(pd())
			{
				write(lu[i].t);
				puts("");
				return 0;
			}
		}
	}
	puts("-1");
	return 0;
}

测试点1:

5 10
3 4 7
2 1 8
5 2 7
4 2 3
1 4 1
2 3 4
1 5 9
1 3 8
5 4 5
5 3 4

4
2020/5/6 12:33
加载中...