大佬帮忙看一眼为什么最后一个点超时
查看原帖
大佬帮忙看一眼为什么最后一个点超时
817616
Arthur_楼主2023/10/13 19:07
#include <bits/stdc++.h>
using namespace std;
#define int long long
struct tree
{
    int head;
    int nxt;
    int val;
} a[300005];
int n,m,sum=0;
int fa[100001];
void read(int &a)
{
    scanf("%lld",&a);
}
bool cmp(tree x,tree y)
{
    return x.val<y.val;
}
int find(int x)
{
    return fa[x]==x?x:find(fa[x]); 
}
void k()
{
    int tot=0;
    sort(a+1,a+m+1,cmp);
    for(int i=1;i<=m;i++)
    {
        int fax=find(a[i].head);
        int fay=find(a[i].nxt);
        if(fax!=fay)
        {
            fa[fay]=fax;
            sum+=a[i].val;
            tot++;
        }
        if(tot==n-1)
        {
            break;
        }
    }
}
signed main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        fa[i]=i;
    }
    for(int i=1;i<=m;i++)
    {
        read(a[i].head),read(a[i].nxt),read(a[i].val);
    }
    k();
    cout<<sum;
    return 0;
}
2023/10/13 19:07
加载中...