一、生成树

 洛谷模板最小生成树【跑的还算快的

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 5020
#define M 200008
using namespace std;

int n,m,ans;

int tot;

int fa[N];

struct E{
    int x,y,z;
}e[M];

bool cmp(E a,E b){
    return a.z<b.z;
}

int f(int x){
    return fa[x]==x?x:fa[x]=f(fa[x]);
}

int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++)scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].z);
    for(int i=1;i<=n;i++)fa[i]=i;
    sort(e+1,e+m+1,cmp);
    for(int i=1;i<=m;i++){
        int x=e[i].x,y=e[i].y;
        int fx=f(x),fy=f(y);
        if(fx!=fy){
            fa[fx]=fy;
            ans+=e[i].z;
            if(++tot==n-1)break;
        }
    }
    if(tot!=n-1)cout<<"orz\n";
    else printf("%d\n",ans);
    return 0;
}
kruskal

相关文章:

  • 2021-09-30
  • 2022-01-08
  • 2021-05-20
  • 2021-07-31
  • 2021-10-25
  • 2022-01-25
  • 2021-06-10
猜你喜欢
  • 2022-12-23
  • 2021-08-10
  • 2021-09-30
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案