zoukankan      html  css  js  c++  java
  • hdu-1863-畅通工程(kruskal算法模板)

     题目链接

     1 /*
     2     Name:hdu-1863-畅通工程
     3     Copyright:
     4     Author:
     5     Date: 2018/4/18 10:19:03
     6     Description:
     7     kruskal算法 
     8 */
     9 #include <iostream>
    10 #include <cstring>
    11 #include <algorithm> 
    12 #include <cstdio>
    13 using namespace std;
    14 const int MAXN = 110;
    15 struct edge{
    16     int x, y, w;
    17     edge(int x=0,int y=0, int w=0):x(x),y(y),w(w){
    18     };
    19 } e[5000];
    20 int N ,M, cnt;
    21 int fa[MAXN];
    22 int getfather(int x) {//查找 
    23     if (x == fa[x]) return x;
    24     else return fa[x] = getfather(fa[x]);
    25 }
    26 bool cmp(edge a, edge b)  {//从小到大排序 
    27     return a.w < b.w;
    28 }
    29 int kruskal() {
    30     sort(e+1, e+M+1, cmp);
    31     cnt = M;//边数 
    32     int ans = 0;
    33     for (int i=1; i<=N; ++i) fa[i] = i;
    34     for (int i=1; i<=M; ++i) {
    35         int t1 = getfather(e[i].x);
    36         int t2 = getfather(e[i].y);
    37         if (t1 != t2) {
    38             fa[t1] = t2;
    39             ans += e[i].w;
    40             cnt--;//加入结点 
    41             if (cnt == 1) break;////// 加入n-1条边说明已经生成最小生成树 
    42         }
    43     }
    44     return ans;
    45 }
    46 int main()
    47 {
    48 //    freopen("in.txt", "r", stdin);
    49     while (cin>>N>>M, N) {
    50         memset(e, 0, sizeof(e));
    51         memset(fa, 0, sizeof(fa));
    52         for (int i=1; i<=N; i++) {
    53             scanf("%d %d %d", &e[i].x, &e[i].y, &e[i].w);
    54         }
    55         int ans = kruskal();
    56         if (cnt != 1) cout<<"?"<<endl;
    57         else cout<<ans<<endl;
    58     }
    59     return 0;
    60 }
    61 
    62  
  • 相关阅读:
    U3D不同平台载入XML文件的方法——IOS MAC Android
    C++使用规范小记
    设置角色对象可见性
    编辑器菜单操作
    U3D资源动态加载异步方案探究
    Animation动画
    Unity3D失去焦点时继续渲染
    C#打开当前目录
    组件模式代码实践(C#版本)
    Unity3D批处理脚本
  • 原文地址:https://www.cnblogs.com/langyao/p/8872933.html
Copyright © 2011-2022 走看看