zoukankan      html  css  js  c++  java
  • 【洛谷 p3366】模板-最小生成树(图论)

    题目:给出一个无向图,求出最小生成树,如果该图不连通,则输出orz。

    解法:Kruskal求MST。

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cstring>
     4 #include<iostream>
     5 #include<algorithm>
     6 using namespace std;
     7 
     8 const int N=5010,M=200010;
     9 int fa[N];
    10 struct edge{int x,y,d;}a[M];
    11 
    12 int ffind(int x)
    13 {
    14     if (fa[x]!=x) fa[x]=ffind(fa[x]);
    15     return fa[x];
    16 }
    17 bool cmp(edge x,edge y) {return x.d<y.d;}
    18 int main()
    19 {
    20     int n,m;
    21     scanf("%d%d",&n,&m);
    22     int x,y,d;
    23     for (int i=1;i<=m;i++)
    24       scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].d);
    25     sort(a+1,a+1+m,cmp);
    26     for (int i=1;i<=n;i++) fa[i]=i;
    27     int sum=0,cnt=0;
    28     for (int i=1;i<=m;i++)
    29     {
    30       int x=a[i].x,y=a[i].y;
    31       int xx=ffind(x),yy=ffind(y);
    32       if (xx!=yy)
    33       {
    34         fa[xx]=yy;
    35         sum+=a[i].d;
    36         cnt++;
    37         if (cnt==n-1) break;
    38       }
    39     }
    40     if (cnt==n-1) printf("%d
    ",sum);
    41     else printf("orz
    ");
    42     return 0;
    43 }
  • 相关阅读:
    MySQL主从复制
    MySQL索引
    MySQL视图(view)
    MySQL表类型和存储引擎
    MySQL事务(三)
    MySQL事务(二)
    MySQL事务(一)
    MySQL事件调度器
    协同过滤推荐算法
    SVD奇异值分解
  • 原文地址:https://www.cnblogs.com/konjak/p/6073998.html
Copyright © 2011-2022 走看看