最小生成树II
来源:互联网 发布:linux设置文件权限命令 编辑:程序博客网 时间:2024/05/17 04:06
最小生成树II
Time Limit:10000MS Memory Limit:65536K
Total Submit:275 Accepted:127
Case Time Limit:1000MS
Description
农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了用最小的消费,他想铺设最短的光纤去连接所有的农场。你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并所用光纤最短的方案。每两个农场间的距离不会超过100000
Input
第一行: 农场的个数,N(3<=N<=5000)。
第二行..结尾: 后来的行包含了一个N*N的矩阵,表示每个农场之间的距离。理论上,他们是N行,每行由N个用空格分隔的数组成,实际上,他们限制在80个字符,因此,某些行会紧接着另一些行。当然,对角线将会是0,因为不会有线路从第i个农场到它本身。
Output
只有一个输出,其中包含连接到每个农场的光纤的最小长度。
Sample Input
40 4 9 214 0 8 179 8 0 1621 17 16 0
Sample Output
28
a) 初始化:dis[v]=maxint(v∈V,v≠s);dis[s]=0; pre[s]=s; S={s};tot=0
b) Fori:=1 to n
1.取顶点v∈V-S使得W(u,v)=min{W(u,v)|u∈S,v∈V-S,(u,v)∈E}
2.S=S+{v};tot=tot+W(u,v);输出边(u,v)
3.ForV-S中每个顶点v do Relax(u,v,Wu,v)
c) 算法结束:tot为MST的总权值
const maxn=5000;var a:array[0..maxn,0..maxn] of longint; v,d:array[0..maxn] of longint; i,j,n,s:longint;procedure prim;var i,j,k,min:longint;begin for i:=1 to n do d[i]:=a[1,i]; v[1]:=1; for i:=1 to n-1 do begin min:=maxlongint; for j:=1 to n do if (v[j]=0) and (d[j]<min) then begin k:=j; min:=d[j]; end; v[k]:=1; s:=s+min; for j:=1 to n do if (v[j]=0) and (a[k,j]<d[j]) and (a[k,j]<>0) then d[j]:=a[k,j]; end;end;begin readln(n); for i:=1 to n do for j:=1 to n do read(a[i,j]); prim; writeln(s);end.
- 最小生成树II
- 最小生成树II
- 最小生成树II
- SSL P1764 最小生成树II
- 最小生成树II-SSL 1764
- SSL 1764——最小生成树II
- 最小比例 最小生成树
- 小明的家乡II 最小生成树之prim算法
- 最小生成树&&次最小生成树
- 最小生成生成树计数
- 树+最小生成树
- 最小生成树
- 最小生成树 MST
- 最小生成树Kruskal
- kruskal 最小生成树
- 最小生成树
- 最小生成树
- 最小生成树
- xcode8.1 权限配置 source code
- 手把手教你给一个iOS app配置多个环境变量
- linux查看磁盘使用情况
- 安卓编程日记【一】开发环境配置篇
- SparkStreaming的WordCount示例及源码分析(二)
- 最小生成树II
- 接口作业的笔记之简答题
- MongoDB线上实践指南-基础篇之命名规范(一)
- Android常用8种设计模式(一)
- 编程中Myeclipse出现的错误
- 9.4 MATLAB try-catch结构
- Android两种典型的单例模式及SharedPrefenences单例模式的封装
- 总纲之六大设计原则
- Docker之搭建Go Web服务~~