zoukankan      html  css  js  c++  java
  • 最小生成树基础算法(更新中~)

    Kruskal算法

     

     1 //
     2 //  main.cpp
     3 //
     4 //  Created by Soildom on 2017/10/31.
     5 //  Copyright © 2017年 Soildom. All rights reserved.
     6 //
     7 
     8 #include <iostream>
     9 using namespace std;
    10 
    11 int V,E;
    12 class edge {
    13 public:
    14     int weight,from,to;
    15     bool flag=false;
    16 };
    17 
    18 int cmp(const void *p1,const void *p2) {
    19     return ((class edge*)p1)->weight-((class edge*)p2)->weight;
    20 }
    21 
    22 int union_find(int *v,int x) {
    23     return (v[x]==x)?x:(v[x]=union_find(v, v[x]));
    24 }
    25 
    26 void MST(edge *e,int *v) {
    27     int vnum=0,all_weight=0,x,y;
    28     for (int i=0; i<E&&vnum<V-1; i++) {
    29         x=union_find(v, e[i].from);
    30         y=union_find(v, e[i].to);
    31         if (x!=y) {
    32             v[x]=y;
    33             e[i].flag=true;
    34             all_weight+=e[i].weight;
    35             vnum++;
    36         }
    37     }
    38     cout<<all_weight<<endl;
    39 }
    40 
    41 int main() {
    42     char c1,c2;
    43     cin>>V>>E;
    44     edge *e=new edge[E];
    45     int *v=new int[V];
    46     for (int i=0; i<V; i++)
    47         v[i]=i;
    48     for (int i=0; i<E; i++) {
    49         cin>>c1>>c2>>e[i].weight;
    50         e[i].from=c1-'a';
    51         e[i].to=c2-'a';
    52     }
    53     qsort(e, E, sizeof(edge), cmp);
    54     MST(e, v);
    55     delete [] e;
    56     delete [] v;
    57 }
  • 相关阅读:
    AtCoder Beginner Contest 167
    AtCoder Beginner Contest 166
    AtCoder Beginner Contest 165
    AtCoder Beginner Contest 164
    AtCoder Beginner Contest 163
    AtCoder Beginner Contest 162
    AtCoder Beginner Contest 161
    AtCoder Beginner Contest 160
    AtCoder Beginner Contest 159
    自定义Mybatis自动生成代码规则
  • 原文地址:https://www.cnblogs.com/soildom/p/7887068.html
Copyright © 2011-2022 走看看