还是畅通工程

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

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

Hint

Huge input, scanf is recommended.

代码:

 1 #include<stdio.h>
 2 #include<string.h>
 3 const int inf=0x3f3f3f3f;
 4 int vis[101],lowc[101];
 5 int sta[101][101];
 6 int prim(int cost[][101], int n)
 7 {
 8     int i,j,p;
 9     int minc,res=0;
10     memset(vis , 0 , sizeof(vis));
11     vis[0] = 1;
12         for(i=1;i<n;i++)
13         {
14             lowc[i] = cost[0][i];
15         }
16     for(i=1 ; i<n ; i++)
17     {
18         minc=inf ; //<初始化一个较大的数>
19         p=-1;
20         for(j=0 ; j<n ; j++)
21         {
22             if(0==vis[j] && minc > lowc[j] )
23             {
24                 minc = lowc[j];
25                 p = j;
26             }
27         }
28         if(inf == minc) return -1;  //原图不联通
29         res += minc ;
30         vis[p] = 1;
31         for( j=0 ; j<n ; j++)
32         {
33             if(0==vis[j] && lowc[j] > cost[p][j])
34                 lowc[j] = cost[p][j];
35         }
36     }
37     return res ;
38 }
39 int main( void )
40 {
41     int n,i,a,b,c,j;
42     while(scanf("%d",&n),n)
43     {
44         for(i=0;i<n;i++)
45         {
46             for(j=0;j<n;j++)
47             {
48                 sta[i][j]=inf;
49             }
50         }
51         for(i=0 ; i<n*(n-1)/2 ; i++)
52         {
53             scanf("%d%d%d",&a,&b,&c);
54             sta[a-1][b-1]=sta[b-1][a-1]=c;
55         }
56         printf("%d\n",prim(sta,n));
57     }
58     return 0;
59 }

View Code

转载于:https://www.cnblogs.com/gongxijun/p/3566553.html

HDUOJ---1233还是畅通工程相关推荐

  1. Kruskal HDOJ 1233 还是畅通工程

    题目传送门 1 /* 2 最小生成树之kruskal算法--并查集(数据结构)实现 3 建立一个结构体,记录两点和它们的距离,依照距离升序排序 4 不连通就累加距离,即为最小生成树的长度 5 */ 6 ...

  2. HDU 1233 还是畅通工程(最小生成树 Prim+Kruskal)

    原题地址 http://acm.hdu.edu.cn/showproblem.php?pid=1233 题意:(最小生成树裸题)有N个村庄,给出村庄两两之间的距离,要求铺设公路,使得任何两个村庄间都可 ...

  3. HDOJ 1233 还是畅通工程

    实在伤心,一口气A了三个畅通工程,太简单的原因把.这个畅通工程求的是最小的公路长度,就是最小生成树,点太少无向图,prim就好了. #include<stdio.h> #include&l ...

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

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

  5. HDU 1233 还是畅通工程(最小生成树)

    传送门 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  6. HDU 1233 - 还是畅通工程

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

  7. HDU 1233 还是畅通工程。

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1233 x 解题思路: 简单的最小生成树 实现代码: #include <iostream> ...

  8. hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1233 模板题,kruskal求最小生成树. 并查集是个好东西啊  就是注意一点 输入边的信息时,角标 ...

  9. hdu 1233 还是畅通工程(最小生成树的Prim和Kruskal两种算法的c++实现)(prim算法详解)...

    赤裸裸滴最小生成树(MST),刚学的玩意,用两种方法熟练一下.(都是greedy) Kruskal方法:先对边按照代价非递减排序,再不断添加边且不产生环路,当边数=点数-1结束.判断加入(v,w)是否 ...

  10. 还是畅通工程(prim和kruskal)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1233 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    ...

最新文章

  1. 电脑启动后,没有桌面
  2. UA MATH571B 试验设计IV RCBD与Latin Square上
  3. Java队列 PriorityQueue
  4. 成员变量修饰词的作用
  5. 量化策略开发中的参数调优
  6. asp.net中获取全文图片地址的方法
  7. Codeforces Round #328 (Div. 2)D. Super M 虚树直径
  8. 统一认证 ldap mysql_ZABBIX 对接 LDAP实现用户登陆统一认证
  9. c语言最小公倍数最简单求法,c语言最小公倍数与最大公约数的求法集锦
  10. 深圳LED背光源模组十大生产厂家排名是什么呢
  11. pathon的安装与环境部署,数据类型
  12. 【星座】十二星座会因为什么变穷
  13. RxJava学习资源
  14. C语言手机通讯录系统
  15. 个人电子邮箱怎么填写?电子邮箱格式怎么写?
  16. DoT/DoH/DoQ 之 CoreDNS配置
  17. 【Excel】引用人民银行同期贷款利率(基准利率)和LPR利率的利息计算器(多项目)
  18. MySql新增、修改、删除表字段、字段数据类型、长度等(附带各种实际案例语句)
  19. 动态、静态和伪静态url路径如何分辨
  20. Hello World的正确打zhuang开bi方式———lambda表达式

热门文章

  1. pands选取满足条件的行和列
  2. gedit增加对指定文件格式(如qml)的识别和启用合适的语法高亮
  3. 测量程序运行时间;getTickCount()与getTickFrequency()
  4. eclipse中html设置,无法在eclipse中设置HTMLUNIT
  5. 构造方法之间如何调用?
  6. 【Django 2021年最新版教程30】django项目部署到华为云(nginx uWSGI mysql方式)
  7. Docker教程小白实操入门(4)--如何停止一个容器
  8. LeetCode----两数之和
  9. python语法学习第五天--函数(2)
  10. 转字符串_【转】什么是字符串?字符串是用来做什么的?