还是畅通工程

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 30613    Accepted Submission(s): 13713

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

 

Huge input, scanf is recommended.

Source
浙大计算机研究生复试上机考试-2006年
代码:(Prim+堆排序,2015.8.17

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <math.h>
 4 #include <queue>
 5 #include <algorithm>
 6 #define MAX 100100
 7 using namespace std;
 8 int First[MAX];
 9 int Sign;/*记录边编号*/
10 struct Poin
11 {
12     int to,v,next;
13     friend bool operator<(Poin a,Poin b)
14     {
15         return a.v>b.v;
16     }
17 }ID[MAX*3];
18 void Cread(int N){for(int i=0;i<=N;i++)First[i]=0;Sign=1;}/*初始化*/
19 void Add_E(int x,int y,int z)
20 {
21     ID[Sign].to=y;
22     ID[Sign].v=z;
23     ID[Sign].next=First[x];
24     First[x]=Sign++;
25 }
26
27 int Prim(int N)/*Prim+堆维护*/
28 {
29     priority_queue <Poin>Q;
30     Poin NUM;
31     int P=1,i,Sum=0,Vis[MAX]={0};
32     Vis[P]=1;N--;
33     for(i=First[P];i;i=ID[i].next){Q.push(ID[i]);}
34     while(!Q.empty()&&N)
35     {
36         NUM=Q.top();Q.pop();
37         if(!Vis[NUM.to])
38         {
39             P=NUM.to;Vis[P]=1;
40             Sum+=NUM.v;N--;
41             for(i=First[P];i;i=ID[i].next)
42                 Q.push(ID[i]);
43         }
44     }
45     if(!N)return Sum;
46     else return -1;
47 }
48 int main()
49 {
50
51     int N,M,i,A,B,C,SUM;
52     while(scanf("%d",&N)!=EOF)
53     {
54         M=N*(N-1)/2;
55         if(N==0)break;
56         Cread(N);
57         for(i=0;i<M;i++)
58         {
59             scanf("%d%d%d",&A,&B,&C);
60             Add_E(A,B,C);Add_E(B,A,C);
61         }
62         SUM=Prim(N);
63         if(SUM!=-1)printf("%d\n",SUM);
64         else printf("?\n");
65     }
66     return 0;
67 }

View Code

代码详细参考畅通工程:http://www.cnblogs.com/LWF5201314614/articles/3929305.html

转载于:https://www.cnblogs.com/Wurq/articles/4562124.html

【最小生成树】还是畅通工程相关推荐

  1. [最小生成树] 继续畅通工程

    题目描述 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计表,表中列出了任意两城镇间修建 ...

  2. 最小生成树--还是畅通工程

    还是畅通工程 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通 ...

  3. [kuangbin带你飞]专题六 最小生成树 L - 还是畅通工程 (简单最小生成树)

    L - 还是畅通工程 题目链接:https://vjudge.net/contest/66965#problem/L 题目: 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府&qu ...

  4. hdu1879 继续畅通工程 最小生成树

    继续畅通工程 此题明显属于最小生成树的题目 关于最小生成树,有两种方法,一种是Kruskal方法,一种是Prim算法,第一种用并查集即可实现 1 /* 2 hdu1879 3 2013-03-18 1 ...

  5. hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)

    还是畅通工程                                                                            Time Limit: 4000/2 ...

  6. hdu 1879 继续畅通工程 (最小生成树)

    继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  7. 【HDU - 1863】 畅通工程(并查集+最小生成树)

    题干: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的 ...

  8. HDU 1879 继续畅通工程 最小生成树

    继续畅通工程 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description ...

  9. 还是畅通工程 最小生成树

    某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可 ...

  10. A - 还是畅通工程(最小生成树)

    点击打开链接 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通 ...

最新文章

  1. caioj 1077 动态规划入门(非常规DP1:筷子)
  2. ArcGIS改变数据集或要素类的的坐标系(投影)
  3. STM32F0使用LL库实现SHT70通讯
  4. AR科技贯穿里约奥运始终 腾讯QQ营销顺风车值了
  5. iOS开发之MapKit
  6. 【状压dp】AC Challenge
  7. 嵌入式系统--ARM微处理器概述
  8. 网络设备流量分析——ElastiFlow容器化部署与应用
  9. 帆软连接数据库的步骤
  10. C语言俄罗斯方块代码
  11. 【数据分析自学】二、Excel基础知识
  12. 【前端】静态网页和动态网页
  13. matlab 相机焦距,matlab – 给定焦距和摄像机位置/旋转的正确透视图像
  14. ajax errorthrown属性,【技术】error:function (XMLHttpRequest, textStatus, errorThrown)
  15. C语言for循环能不能定义,关于for循环的格式
  16. Yau 近代几何讲座
  17. 用html画布做扇形,jquery canvas 画扇形
  18. Linux schedule 4、负载均衡
  19. 微信小程序包体积过大解决方法
  20. 如何arcview或arcgis下用SHP文件切DEM和影像图?

热门文章

  1. 代码故事:汉德的救赎
  2. map和unordered_map
  3. 关于市场调查分析与需求分析的心得
  4. 【杭电ACM】1.2.6 decimal system
  5. C#中创建线程的四种方式
  6. Linux系统编程 -- 多线程之基于环形队列的生产者与消费者模型
  7. 广度搜索 -- 9.1 Word Ladder -- 求是否有解 -- 图解
  8. jar包上传maven私服出错Cannot deploy artifact from the local repository
  9. windows 10卸载(注销)WSL,注销(卸载)当前安装的Linux的Windows子系统
  10. PyTorch并行与分布式(二)分布式通信包torch.distributed