• HDU 1863 畅通工程 最下生成树问题


    题目描述:给出图,要你求是否存在最小生成树,如果存在,要求输出最小权值和,如果不存在,输出?

    解题报告:又是一个最裸的克鲁斯卡尔,并且要判断是否存在最小生成树的问题。废话不多说,给个短代码:

     1 #include<cstdio>
     2 #include<algorithm>
     3 const int MAX = 100+5;
     4 int N,M,prim[MAX];
     5 int find(int k) {
     6 return prim[k]==k? k:prim[k] = find(prim[k]);
     7 }
     8 struct node {
     9     int x,y,length;
    10 }rode[MAX];
    11 int cmp(node a,node b) {
    12     return a.length<b.length;
    13 }
    14 int main() {
    15     while(scanf("%d%d",&N,&M),N) {
    16         for(int i = 0;i<N;++i)
    17         scanf("%d%d%d",&rode[i].x,&rode[i].y,&rode[i].length);
    18         std::sort(rode,rode+N,cmp);
    19         for(int i = 1;i<=M;++i)
    20         prim[i] = i;
    21         int sum = 0;
    22         for(int i = 0;i<N;++i)
    23         if(find(rode[i].x) != find(rode[i].y)) {
    24             prim[find(rode[i].x)] = find(rode[i].y);
    25             sum+=rode[i].length;
    26         }
    27         bool flag = 0;
    28         for(int i = 2;i<=M;++i)
    29         if(find(i) != find(1)) {
    30             flag = 1;
    31             break;
    32         }
    33         if(flag) {
    34             printf("?
    ");
    35             continue;
    36         }
    37         printf("%d
    ",sum);
    38     }
    39     return 0;
    40 }
    View Code
  • 相关阅读:
    注册系统
    android登录界面
    android作业 购物界面
    第六周jsp作业
    JSP第四周
    JSP第二次作业
    JSP第一次作业
    第一周软件测试
    第九次安卓
    购物菜单
  • 原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3226412.html
Copyright © 2020-2023  润新知