求助
查看原帖
求助
672757
封禁用户楼主2024/8/26 18:49
#include<bits/stdc++.h>
using namespace std;
int w[10005];
int n,m,r,s,M=0x7fffffff;
struct bian
{
	int a,b;
	int w;
}mm[100005];
bool cmp(bian a,bian b)
{
	return a.w<b.w;
}
int nn[10005];
int f(int x)
{
	return x==nn[x]?x:(nn[x]=f(nn[x]));
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>w[i];
		nn[i]=i;
		M=min(M,w[i]);
	}
	for(int i=1;i<=m;i++)
	{
		cin>>mm[i].a>>mm[i].b>>mm[i].w;
	}
	sort(mm+1,mm+m+1,cmp);
	for(int i=1;i<=m;i++)
	{
		if(f(mm[i].a)!=f(mm[i].b))
		{
			r++;
			s+=(2*mm[i].w+w[mm[i].a]+w[mm[i].b]);
			nn[f(mm[i].a)]=f(mm[i].b);
			if(r>=n-1)
			{
				break;
			}
		}
	}
	cout<<s+M;
	return 0;
 } 
2024/8/26 18:49
加载中...