求修正
查看原帖
求修正
976067
wczxluo楼主2023/8/8 09:56
ID	题目	提交者	结果	用时	内存	语言	文件大小	提交时间	测评时间
#43598	1. 最小生成树模板	2022WCZXC2026	0	0ms	0kb	C++11	768b	2023-08-08 09:48:16	2023-08-08 09:48:18
answer
#include<bits/stdc++.h>
using namespace std;
struct qwe{
	int q,w,e;
}a[50001];
int b[10000001];
int find(int x)
{
	if(b[x]!=x) b[x]=find(b[x]);
	return b[x];
}
void wer(int x,int y)
{
	int fx=find(x);
	int fy=find(y);
	b[fx]=fy;
}
bool comp(qwe x,qwe y)
{
	return x.w<y.w;
}
int main()
{
	int n,m;
	int ans=0;
	int num=0;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		b[i]=i;
	}
	for(int i=1;i<=m;i++)
	{
		cin>>a[i].e>>a[i].q>>a[i].w;
	}
	sort(a+1,a+1+m,comp);
	for(int i=1;i<=m;i++)
	{
		int fd=find(a[i].e),fg=find(a[i].q);
		if(fd!=fg)
		{
			ans+=a[i].w;
			num++;
			wer(fd,fg);	
			if(num==n-1) break;
		}
	
	}
	int q1,q2;
	q1=find(a[1].e);
	q2=find(a[2].q);
	if(q1!=q2)
	{
		cout<<"orz";
	}
	else cout<<ans;
}

2023/8/8 09:56
加载中...