最小生成树—prime算法
来源:互联网 发布:苍老师最经典 知乎 编辑:程序博客网 时间:2024/06/05 19:44
问题 C:建立通信
时间限制: 1 Sec 内存限制: 128 MB
提交: 7 解决: 4
[提交][状态][讨论版]
题目描述
据不完全统计,受地震影响,四川大部分灾区通信陷入瘫痪,数千个基站因断电、传输中断等原因退出服务,目前总公司已紧急部署对受灾地区进行通信抢修。按照应急通信保障预案,必须尽快、付出代价最小,效率更高来全力恢复通信。
由于四川大部分灾区都处于山区,有很多基站之间不能直接建立通信。现已知建立各基站之间直接通信的代价,问如何建立总代价最小的通信网,使得任意两个基站之间都能通信?
输入
第1行: N (N为的个数 )
第2~N+1行: Pi1 Pi2 ……Pin(Pij为建立基站i与基站j直接通信的代价
i, j=1 , 2, …., N )
输出
T(建立通信网的最小代价数)
【约束条件】
(1) 10 ≤ N ≤1000
(2) -1 ≤ Pij ≤ 1000 Pij为整数,若Pij = -1,表示基站i与基站j不能直接通信
(3)时间限制: 1000MS
样例输入
5
0 160 30 20 -1
160 0 200 -1 -1
30 200 0 50 80
20 -1 50 0 70
-1 -1 80 70 0
样例输出
280
#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 1001#define Inf 99999999int e[N][N], book[N], dis[N];int main(){int i, j, k, n, m, count, sum, Min;while(scanf("%d", &n)!=EOF){count =0;sum=0;memset(book, 0, sizeof(book));for(i=1; i<=n; i++)for(j=1; j<=n; j++){scanf("%d", &e[i][j]);if(e[i][j]==-1)e[i][j]=Inf;}for(i=1; i<=n; i++)dis[i]=e[1][i];book[1]=1;count++;while(count<n){Min = Inf;for(i=1; i<= n; i++){if(book[i]==0&&dis[i]<Min){Min = dis[i];j=i;}}book[j]=1;count++;sum+=dis[j];for(k=1; k<=n; k++){if(book[k]==0 && dis[k]>e[j][k])dis[k]=e[j][k];}}printf("%d\n", sum);}return 0;}
0 0
- 最小生成树—prime算法
- 最小生成树算法[prime]
- 最小生成树-prime算法
- 最小生成树 prime算法
- 最小生成树 prime算法
- 最小生成树Prime算法
- 最小生成树--Prime算法
- 最小生成树 Prime算法
- 最小生成树 prime 算法
- 最小生成树-prime算法
- prime算法-最小生成树算法
- 求解最小生成树——prime算法模板
- prime算法求所有最小生成树
- hdu 1879 最小生成树【prime算法】
- uva 4138【最小生成树prime算法】
- zoj1372 Networking 最小生成树Prime算法
- 最小生成树之prime算法实现
- 最小生成树 prime算法 归纳
- Android 修改拨号音尖锐问题,降级拨号音量修改
- Machine Learning第三讲[Logistic回归] --(四)解决过拟合问题
- 用服务器请求数据,解析数据,和使用Handler
- 常用的Selector
- 使用webpack打包的后,公共请求路径的配置问题
- 最小生成树—prime算法
- 附件上传
- LTIB 介绍
- Linux定时器之setitimer()
- ImageLoad总结
- 使用Maven搭建Hadoop开发环境
- GetLastError() 返回值对照表
- http
- 我把 Toolbar 转了一下变成了菜单