感觉没问题可就是过不了
查看原帖
感觉没问题可就是过不了
843406
sjm2022楼主2024/8/25 11:37

提交结果

#include <bits/stdc++.h>
using namespace std;
struct yun
{
    int x;
    int y;
    int dis;
};
int find(int x,int fa[])
{
    if (x==fa[x])
    {
        return x;
    }
	return fa[x]=find(fa[x],fa);
}
bool bj(yun a,yun b)
{
	return a.dis<b.dis;
}
int main()
{
    yun a[200005];
    int fa[200005]={0};
    int n=0;
    int m=0;
    int k=0;
    cin>>n>>m>>k;
    for(int i=1;i<=m;i++)
    {
        cin>>a[i].x>>a[i].y>>a[i].dis;
    }
    for(int i=1;i<=m;i++)
    {
        fa[i]=i;
    }
    int ans=0;
    int b=0;
    sort((a+1),(a+m+1),bj);
    for(int i=1;i<=m;i++)
    {
        if(find(a[i].x,fa)!=find(a[i].y,fa))
        {
            fa[find(a[i].x,fa)]=find(a[i].x,fa);
            ans+=a[i].dis;
            b++;
        }
        if(b>=n-k)
        {
            break;
        }
    }
    if(b>=n-k)
    {
        cout<<(ans)<<endl;
    }
    else
    {
        cout<<"No Answer"<<endl;
    }
    return 0;
}

2024/8/25 11:37
加载中...