对着题解调了半天,愣是MLE,实在找不到错哪了(傻孩子求助)
查看原帖
对着题解调了半天,愣是MLE,实在找不到错哪了(傻孩子求助)
324573
Sin_qwq楼主2021/9/25 20:56
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
#include<map>

using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
#define INF 0x3fffffff
#define ll long long
#define rg register int


inline int read()
{
    char ch=getchar();int x=0,cf=1;
    while(ch<'0'||ch>'9'){if(ch=='-')cf=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
	return x*cf;
}
struct node
{
	int a,b,c;
}con[101000];
int n,m;
int fa[20001<<1];
bool cmp(node a,node b)
{
	return a.c>b.c;
}
int find(int x)
{
	if(fa[x]==x)
	return x;
	fa[x]=find(fa[x]);
	return fa[x];
}
int main()
{
    n=read(),m=read();
    for(rg i=1;i<=n;i++)
    {
    	fa[i]=i,fa[i+n]=i+n;
	}
	for(rg i=1;i<=m;i++)
	{
		con[i].a=read(),con[i].b=read(),con[i].c=read();
	}
	sort(con+1,con+m+1,cmp);
	for(rg i=1;i<=m;i++)
	{
		if(find(con[i].a)==find(con[i].b)||find(con[i].a+n)==find(con[i].b+n))
		{
			cout<<con[i].c<<endl;
			return 0;
		}
		fa[fa[con[i].a+n]]=fa[con[i].b];
		fa[fa[con[i].b]]=fa[con[i].a+n];
	}
	cout<<"0"<<endl;
	return 0;
}




2021/9/25 20:56
加载中...