(玄关)58分求助
查看原帖
(玄关)58分求助
1328579
mairuisheng楼主2024/9/1 16:40

Result:58分

#include<cstdio>
#include<algorithm>
int n,s;
int ans,cnt;
int f[5001];
struct network
{
	int dx;
	int dy;
	int dis;
}nmap[5001];
bool cmp(network x,network y)
{
	return x.dis<y.dis;
}
int search(int x)
{
	if(f[x]!=x)f[x]=search(f[x]);
	return f[x];
}
int main()
{
	int i;
	scanf("%d %d",&n,&s);
	for(i=1;i<=s;++i)scanf("%d %d %d",&nmap[i].dx,&nmap[i].dy,&nmap[i].dis);
	for(i=1;i<=n;++i)f[i]=i;
	std::sort(nmap+1,nmap+1+s,cmp);
	for(i=1;i<=s;++i)
	{
		int r1=search(nmap[i].dx),r2=search(nmap[i].dy);
		if(r1!=r2)
		{
			f[r2]=r1;
			ans+=nmap[i].dis;
			cnt++;
		}
	}
	if(cnt==(n-1))
	{
		printf("%d",ans);
	}
	else puts("orz");
	return 0;
}

求助大佬

2024/9/1 16:40
加载中...