为什么re了。。。
查看原帖
为什么re了。。。
540658
雪夜yukiyo楼主2021/11/29 18:51
#include<bits/stdc++.h>
using namespace std;
int n,m,fa[1000010],ans,road;
struct node{
	int x,y,p;
}tree[1000010];
bool cmp(node x,node y)
{
	return x.p<y.p;
}
int find(int x)
{
	if(fa[x]==x) return x;
	else find(fa[x]);
}
void Union(int x,int y)
{
	fa[find(x)]=find(y);
}
void kruskal()
{
	sort(tree,tree+m+1,cmp);
	for(int i=1;i<=n;i++)
	{
		fa[i]=i;
	}
	for(int i=1;road<n-1;i++)
	{
		if(find(tree[i].x)!=find(tree[i].y))
		{
			Union(tree[i].x,tree[i].y);
			road++;
			ans=ans+tree[i].p;
		}
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>tree[i].x>>tree[i].y>>tree[i].p;
	}
	kruskal();
	cout<<ans;
	return 0;
}
2021/11/29 18:51
加载中...