求助
查看原帖
求助
213107
hpcwdclcx楼主2020/7/8 21:55

不知道那错了,爆零/kk

#include<bits/stdc++.h>
using namespace std;
int n,m,k,fa[10010],cnt,ans,sum;
struct edge
{
	int u,v,w;
}e[1001000];
void adde(int u,int v,int w)
{
	e[++cnt].u=u;
	e[cnt].v=v;
	e[cnt].w=w;
}
bool cmp(const edge &a,const edge &b)
{
	return a.w<b.w;
}
int find(int x)
{
	if(x=fa[x])return fa[x];
	else return fa[x]=find(fa[x]);
}
int main()
{
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)fa[i]=i;
	for(int i=1;i<=m;i++)
	{
		int u,v,w;
		cin>>u>>v>>w;
		adde(u,v,w);
	}
	sort(e+1,e+m+1,cmp);
	for(int i=1;i<=m;i++)
	{
		if(find(e[i].u)!=find(e[i].v))
		{
			fa[find(e[i].u)]=find(e[i].v);
			ans+=e[i].w;
			sum++;
		}
		if(sum==n-k)
		{
			cout<<ans<<endl;
			return 0;
		}
	}
	cout<<"No Answer"<<endl;
	return 0;
}

违规自删

2020/7/8 21:55
加载中...