求助P1111
  • 板块学术版
  • 楼主liaoyichen
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/8/26 15:06
  • 上次更新2023/11/4 08:57:06
查看原帖
求助P1111
486675
liaoyichen楼主2021/8/26 15:06

https://www.luogu.com.cn/problem/P1111

我全部TLE

Code

#include<bits/stdc++.h>
using namespace std;
const int N=100000;
struct M
{	int u,v,w;
}a[N+1];
int n,m;
int f[1001];
bool t;
inline int read()
{   register int f=0,w=1;
    char ch=getchar();
    while(ch<'0'||ch>'9')
    {   if(ch=='-')
        {   w=-1;
            ch=getchar();
        }
    }
    while(ch>='0'&&ch<='9')
    {   f=f*10+ch-'0';
        ch=getchar();   
    }
    return f*w;
}
bool cmp(M x,M y)
{	return x.w<y.w;
}
int find(int x)
{	if(f[x]==x)
	{	return f[x];
	}
	f[x]=find(f[x]);
	return f[x];
}
void hb(int x,int y)
{	int fx=find(x);
	int fy=find(y);
	f[fx]=fy;
}
int main()
{	n=read();
	m=read();
	for(int i=1;i<=m;i++)
	{	a[i].u=read();
		a[i].v=read();
		a[i].w=read();
	}
	t=false;
	sort(a+1,a+1+m,cmp);
	for(int i=1;i<=n;i++)
	{	f[i]=i;
	}
	for(int i=1;i<=m;i++)
	{	int fx=find(a[i].u);
		int fy=find(a[i].v);
		if(fx!=fy)
		{	hb(a[i].u,a[i].v);
			n--;
		}
		if(n==1)
		{	cout<<a[i].w<<endl;
			t=1;
			break;
		}
	}
	if(!t)
	{	cout<<"-1"<<endl;	
	}
}
2021/8/26 15:06
加载中...