63求调TwT
查看原帖
63求调TwT
1345259
MoonLake楼主2024/12/29 17:17
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,fa[5000];
struct Edge{
	int u,v,w;
}e[25000000];
bool cmp(Edge x,Edge y)
{
	return x.w<y.w;
}
void Init(int x)
{
	for(int i=1;i<=x;i++) fa[i]=i;
	return;
}
bool Merge(int a,int b)
{
	int q=fa[a],p=fa[b];
	if(q==p) return false;
	for(int i=1;i<=n;i++) if(fa[i]==q) fa[i]=p;
	return true;
}
int Kruskal(int x)
{
	int ans=0;
	sort(e,e+m,cmp);
	for(int i=0;i<m;i++)
	{
		if(Merge(e[i].u,e[i].v))
		{
			ans+=e[i].w;
			x--;
			if(x==1) return ans;
		}
	} 
	return 0;
}
int main()
{
	scanf("%d%d",&n,&m);
	Init(n);
	for(int i=0;i<m;i++) scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w);
	printf("%d",Kruskal(n));
 	return 0;
}
2024/12/29 17:17
加载中...