还是畅通project

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 25177    Accepted Submission(s): 11174

Problem Description
某省调查乡村交通状况,得到的统计表中列出了随意两村庄间的距离。省政府“畅通project”的目标是使全省不论什么两个村庄间都能够实现公路交通(但不一定有直接的公路相连,仅仅要能间接通过公路可达就可以),并要求铺设的公路总长度为最小。请计算最小的公路总长度。
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

这道题和继续畅通project是一样的,代码仅仅修改了一点点,注意题意中的N(N-1)/2,这个代表的是(N*(N-1))/2,而那道继续畅通project是N*((N-1)/2)

代码:

#include<stdio.h>

#include<string.h>

#include<math.h>

#define INF 1 << 30

int map[1001][1001] ;

int dis[1001] ;

int used[1001] ;

void Prim(int N)



 int i = 0 ,j = 0 ;

 int c = 0 ; 

 int sum = 0 ;//用来记录最后所须要的花费

 dis[1] = 0 ;

    for( i = 1 ; i <= N ; i++)

 {

  int min = INF ;

  for( j = 1 ; j <= N ; j++)

  {

            if(!used[j] && dis[j] < min)

   {

    min = dis[j] ;

    c = j ;

   }

  }

  used[c] = 1 ;

  for(j = 1 ; j <= N ; j++)

  {

   if(!used[j] && dis[j] > map[c][j])

    dis[j] = map[c][j] ;

  }

 }

    for(i = 1 ; i <= N ; i++)

  sum += dis[i] ;

 printf("%d\n",sum);

}

int main()

{

 int N = 0 ;

 while(~scanf("%d",&N))

 {

  if(N == 0)

   break ;

     int a = 0 , b = 0 , c = 0  ;

  int i = 0 , j = 0 ;

  for(i = 1 ; i <= N ; i++)

  {

   for(j = 1 ; j <= N ; j++)

    map[i][j] = INF ;

      dis[i] = INF ;

      used[i] = 0 ;

  }

  int m = 0 ;

  m = (N * (N-1)) / 2;

  for( i = 0 ; i < m ; i++)

  {

   scanf("%d%d%d" , &a , &b , &c );

   //推断是否会有重边

      if(map[a][b] > c)

      map[a][b] = map[b][a] = c ; 

  }

  Prim( N ) ;

 }

 return 0 ;

}

杭电1233还是畅通project的更多相关文章

  1. 杭电1879继续畅通project

    继续畅通project Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  2. hdu 1233 还是畅通project (克鲁斯卡尔裸题)

    还是畅通project                                              Time Limit: 4000/2000 MS (Java/Others)    M ...

  3. hdu 1233(还是畅通project)(prime算法,克鲁斯卡尔算法)(并查集,最小生成树)

    还是畅通project Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  4. hdu 1233 还是畅通project(kruskal求最小生成树)

    还是畅通project Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  5. hdu 1233 还是畅通project

    本题链接:点击打开链接 本题大意: 有n个村庄,n*(n-1)/2条路,输入每条路所连接是哪两个村庄及长度,求使全部村庄均连通(并不是都两两连通) 所铺公路的最短路程. 解题思路: 使用并查集基础及K ...

  6. 畅通project(杭电1863)

    畅通project Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  7. 杭电1874畅通project绪

    畅通project续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  8. 还是畅通project(杭州电1233)

    还是畅通project Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  9. 畅通project(杭电1232)

    畅通project Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

随机推荐

  1. uva10465(完全背包,要求装满背包)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&c ...

  2. Java容器的概要

    [Java流输入/输出原理] 在Jaav程序.对于输入数据/输出操作"流"(stream)时尚:J2SDK它提供了多种 各种各样的"流"类,用于获得不同类型的数 ...

  3. update和saveOrUpdate具体解释

    在Hibernate中,最核心的概念就是对PO的状态管理.一个PO有三种状态:  1.未被持久化的VO  此时就是一个内存对象VO,由JVM管理生命周期  2.已被持久化的PO,而且在Session生 ...

  4. 呈现怎样的香蕉饼路线Android系统

    无话可说,该系统的第一版,Android有的还可以,路由设置确实有闪光现象背.与其他的稳定版本发布,被能够机顶盒和路由组合.其次是SSD,还是很不错的. 硬件 watermark/2/text/aHR ...

  5. eclipse 于 Tomcat于 热部署 project

    eclipse在 Tomcat中热部署project 1.在eclipse中国安装一个tomcat插件:SysdeoEclipse Tomcat Launcher plugin(http://www. ...

  6. (算法入门经典大赛 优先级队列)LA 3135(之前K说明)

    A data stream is a real-time, continuous, ordered sequence of items. Some examples include sensor da ...

  7. 【从翻译mos文章】Weblogic AdminServer 启动fail,报错&quot;unable to get file lock, will retry&quot;

    Weblogic AdminServer 启动fail,报错"unable to get file lock, will retry" 参考原始: Weblogic AdminSe ...

  8. IOS --- 日期时间格式 更改

    1.怎样怎样将一个字符串如" 20110826134106"装化为随意的日期时间格式.以下列举两种类型:    NSString* string =@"201108261 ...

  9. 设单链表中存放n个字符,试设计一个算法,使用栈推断该字符串是否中心对称

    转载请注明出处:http://blog.csdn.net/u012860063 问题:设单链表中存放n个字符.试设计一个算法,使用栈推断该字符串是否中心对称,如xyzzyx即为中心对称字符串. 代码例 ...

  10. 左右xcode的重构选项的一些理解

    Rename(重命名):对标示符进行重命名,以获得更好的代码可读性,这些标示符包含类,方法或者函数的名称. Extract(抽取):将你在XCode种选择的代码抽取到一个新的方法或函数中. Creat ...