zoukankan      html  css  js  c++  java
  • HDU--1863--畅通工程--并查集

    畅通工程

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 12253    Accepted Submission(s): 5001


    Problem Description
    省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。
     


     

    Input
    测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M ( < 100 );随后的 N
    行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,全部输入结束,相应的结果不要输出。
     


     

    Output
    对每个测试用例,在1行里输出全省畅通需要的最低成本。若统计数据不足以保证畅通,则输出“?”。
     


     

    Sample Input
    3 3 1 2 1 1 3 2 2 3 4 1 3 2 3 2 0 100
     


     

    Sample Output
    3 ?
     1 #include <iostream>
     2 #include <cstdlib>
     3 using namespace std;
     4 int father[111],k;
     5 struct ssss
     6 {
     7  int a,b,c;
     8 }ss[11111];
     9 int cmp(const void *a,const void *b) //按照从小到大排序排序
    10 {
    11  return (*(ssss *)a).c-(*(ssss *)b).c;
    12 }
    13 int Find(int a)    //找到a的祖先并路径上成员全部指向祖先
    14 {
    15  return a==father[a]?a:father[a]=Find(father[a]);
    16 }
    17 void Union(int a,int b,int i)
    18 {
    19  if(Find(a)!=Find(b))
    20  {
    21   father[Find(a)]=Find(b);k+=ss[i].c; //a家族并入b家族且k加上相应的值
    22  }
    23 }
    24 int main (void)
    25 {
    26  int n,m,i,j;
    27  while(cin>>n>>m&&n)
    28  {
    29   for(i=1;i<=m;i++)
    30    father[i]=i;   //初始化
    31   for(i=0;i<n;i++)
    32    cin>>ss[i].a>>ss[i].b>>ss[i].c;
    33   qsort(ss,n,sizeof(ss[0]),cmp);
    34   for(i=k=0;i<n;i++)
    35    Union(ss[i].a,ss[i].b,i);  //并一起的并起来
    36   for(i=1,j=0;i<=m;i++)
    37   {
    38    if(j>1)break;   //如果出现两个祖先,也就是没有全部联通
    39    if(father[i]==i)j++;  //统计祖先个数即家族个数
    40   }
    41   if(j>1)cout<<"?"<<endl;
    42   else cout<<k<<endl;
    43  }
    44  return 0;
    45 }
    AV代码
  • 相关阅读:
    Android为TV端助力listview 非常重要的几个属性
    AndroidTV端的requestFocus()问题
    Android TV端的(RecyclerView)水平滚动焦点错乱问题
    Android为TV端助力完美超级实用的ADB命令大全
    Android为TV端助力(转载)
    Android为TV端助力 反编译
    Android为TV端助力 最完整的Glide解析
    Android为TV端助力 eclipse build project 出现major.minor version 52.0的问题
    Android为TV端助力 UDP协议
    Android为TV端助力 完全解析模拟遥控器按键
  • 原文地址:https://www.cnblogs.com/jingdianITnan/p/3228255.html
Copyright © 2011-2022 走看看