MLE 60分 并查集 求助
查看原帖
MLE 60分 并查集 求助
128451
x_miracle楼主2020/10/31 19:26

rt,MLE 60 分。

请问如何优化。。。

蒟蒻第一次被MLE卡住。。。

谢谢谢谢

#include <bits/stdc++.h>
#define MAXN 100005
using namespace std;
int fat[20005*2];
struct EDGE
{
	int from,to,val;
	bool operator < (const EDGE &x) const
	{return val>x.val;}
}	e[MAXN];
int Find(int x)
{
	if(x!=fat[x])	return fat[x]=Find(fat[x]);
	else return fat[x];
}
int main()
{
	int n,m; scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i){fat[i]=i;fat[i+n]=i+n;}
	for(int i=1;i<=m;++i)	scanf("%d%d%d",&e[i].from,&e[i].to,&e[i].val);
		sort(e+1,e+1+m);
	for(int i=1;i<=m;++i)
	{
		int u=Find(e[i].from);
		int v=Find(e[i].to);
		if(u==v)
		{
			printf("%d",e[i].val);
			return 0;
		}
		fat[u]=fat[ e[i].to+n ];
		fat[v]=fat[ e[i].from+n ];
	}
	printf("0");
	return 0;
}
2020/10/31 19:26
加载中...