• [HDU 1233] 还是畅通工程


    还是畅通工程

    Time Limit: 4000/2000 MS (Java/Others)

    Memory Limit: 65536/32768 K (Java/Others)

    Problem Description
    某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。
    Input
    测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。
    当N为0时,输入结束,该用例不被处理。
    Output
    对每个测试用例,在1行里输出最小的公路总长度。
    Sample Input
    3
    1 2 1
    1 3 2
    2 3 4
    4
    1 2 1
    1 3 4
    1 4 1
    2 3 3
    2 4 2
    3 4 5
    0
    Sample Output
    3 5
    Hint
    Huge input, scanf is recommended.
    【题解】最小生成树kruskal裸题。复习一下kruskal
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int pre[100010],n,m,ans=0;
     4 struct edge {
     5     int a,b,w;
     6 }e[100010];
     7 int cnt=0;
     8 int cmp(const void *i, const void *j) {
     9     struct edge *c= (struct edge*) i;
    10     struct edge *d= (struct edge*) j;
    11     return c->w - d->w;
    12 }
    13 int getf(int x) {
    14     int r=x;
    15     while(r!=pre[r]) r=pre[r];
    16     int i=x,j;
    17     while(i!=r) {
    18         j=pre[i];
    19         pre[i]=r;
    20         i=j;
    21     }
    22     return r;
    23 }
    24  
    25 int main() {
    26     while(~scanf("%d",&n)&&n) {ans=0;
    27         m=n*(n-1)/2;
    28         for (int i=1;i<=m;++i) 
    29             scanf("%d %d %d",&e[i].a,&e[i].b,&e[i].w);
    30         qsort(e+1,m,sizeof(struct edge),cmp);
    31         for (int i=1;i<=n;++i) pre[i]=i;
    32         int fa,fb;cnt=0;
    33         for (int i=1;i<=m;++i) {
    34             fa=getf(e[i].a);
    35             fb=getf(e[i].b);
    36             if(fa!=fb) {
    37                 pre[fa]=fb;
    38                 ans+=e[i].w;
    39                 cnt++;
    40                 if(cnt==n-1) break;
    41             }
    42         }
    43         printf("%d
    ",ans);
    44         ans=0;
    45     }
    46     return 0;
    47 }
    View Code
  • 相关阅读:
    Python3 函数return
    Python3 函数参数
    计算机组成原理基础
    解决 Python2 和 Python3 的共存问题
    管理本地用户和组
    Linux 常用命令(二)
    Linux 控制台
    Linux 常用命令(一)
    Linux中的目录功能(Red Hat 7)
    自定义属性使用
  • 原文地址:https://www.cnblogs.com/TonyNeal/p/hdu1233.html
Copyright © 2020-2023  润新知