高速公路
来源:互联网 发布:单片机 英语 编辑:程序博客网 时间:2024/04/29 17:20
高速公路
(highway.pas)
问题描述:
现在政府计划在某个区域内的的城市间架设高速公路,以使任意两个城市间能够直接或间接到达,怎样修路,费用最小。
输入文件: highway.in
第一行一个整数 n(n<=100)表示城市数目。第二行至第n+1行每行两个数xi,yi(0<=xi,yi<=100)表示第i个城市的坐标;
输出文件:highway.out
输出最小费用。(结果保留两位小数)
输入样例:
3
1 1
1 2
1 3
输出样例:
2.00
很基础的图论题,最小生成树,用prim就行了
const maxn=100; type arr=record x:longint; y:longint; end; var n:longint; total:real; a:array[1..maxn] of arr; h:array[1..maxn] of boolean; map:array[1..maxn,1..maxn] of real; dist:array[1..maxn] of real; procedure init; var i,j:longint; begin assign(input,'highway.in'); assign(output,'highway.out'); reset(input); rewrite(output); fillchar(map,sizeof(map),0); readln(n); for i:=1 to n do readln(a[i].x,a[i].y); for i:=1 to n do for j:=1 to n do begin map[i,j]:=sqrt(sqr(a[i].x-a[j].x)+sqr(a[i].y-a[j].y)); end; end; procedure prim; var i,j,p:longint; min:real; begin for i:=1 to n do dist[i]:=1e10; fillchar(h,sizeof(h),false); dist[1]:=0;h[1]:=true; for i:=2 to n do dist[i]:=map[1,i]; for i:=1 to n-1 do begin min:=1e10;p:=0; for j:=1 to n do if (h[j]=false) and (dist[j]<min) then begin min:=dist[j]; p:=j; end; h[p]:=true; total:=total+dist[p]; for j:=1 to n do begin if (h[j]=false) and (map[p,j]<dist[j]) then dist[j]:=map[p,j]; end; end; end; procedure main; begin prim; writeln(total:0:2); end; procedure outit; begin close(input); close(output); end; begin init; main; outit; end.
- 高速公路
- 高速公路管理信息系统
- 【Prim】高速公路
- CCF - 高速公路
- 【CCF】高速公路
- ccf 高速公路
- ccf 高速公路
- 高速公路(freeway)
- ccf高速公路
- CCF 高速公路
- CCF-高速公路
- ccf 高速公路
- poj2485高速公路
- CCF 高速公路
- 【HAOI2012】高速公路
- 全国高速公路一览表
- 高速公路施工仿真
- 高速公路信息管理系统解决方案
- 关于css部份技巧, div在IE6/IE7/IE8/FF 不同浏览器 中的效果兼容
- 使用DotNetCharting控件生成报表统计图
- vc 向外部窗体发送空格键、和方向键
- 第一篇CSDN的博客,总的来说主要是写关于Mstar手机平台的总结和回顾!
- 内部类 final变量的生命周期
- 高速公路
- java ee必用工具下载地址
- 奇怪的电梯
- RFC3629
- OSGI:服务的发布和引用
- image字段或二进制字段的读写
- CRF中文分词开源版发布啦
- 自己写的第一个程序————学生信息管理系统
- 三道题~~