还是畅通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 ;

}

最新文章

  1. Constraint3:check约束 和 null
  2. CF 371C-Hamburgers[二分答案]
  3. MVC系列1-MVC基础
  4. JABX简单介绍
  5. jgroups 入门
  6. Application.persistentDataPath 的一个小坑
  7. .NET中各种不同的Timer之间区别
  8. 【ADO.NET】7、SQL高级封装
  9. C# config配置文件 自定义节点读取
  10. freemarker使用map
  11. 赚钱快的app
  12. python中的元组
  13. maven +bootstrap+ssm
  14. Zabbix的简单使用
  15. CxGrid筛选自动添加百分号和默认旧的滚动条样式
  16. kls与flag(map)
  17. Python进行Android开发步骤
  18. form enctype:&quot;multipart/form-data&quot;,method:&quot;post&quot; 提交表单,后台获取不到数据
  19. 为Ubuntu 安装Transmission 2.90
  20. Python islower() 方法

热门文章

  1. 【剑指offer】面试题35:第一个数字只出现一次
  2. 询问任意区间的min,max,gcd,lcm,sum,xor,or,and
  3. java表达式陷阱
  4. SQL Server 性能调优培训引言
  5. 重新想象 Windows 8 Store Apps (22) - 文件系统: 访问文件夹和文件, 通过 AQS 搜索本地文件
  6. ORACLE触发特定的解释
  7. 给EasyUI的DateBox控件添加清除button
  8. Gas Station [leetcode] 两个解决方案
  9. Redis时延问题
  10. C标签之forEach