CODEVS1079 回家 (最短路)
2024-09-08 06:10:58
真是语死早,题目看了两遍才看懂。
按照题目要求建边,从'Z'开始跑最短路即可。
Program CODEVS1079;
var a:array[..,..] of longint;
d:array[..] of longint;
pd:array[..] of boolean;
flag:array[..] of boolean;
b:array[..] of longint;
ch,space,ch2,ans:char;
i,j,m,x,min:longint;
procedure spfa(s:longint);
var i,j,l,r,u,v:longint;
begin
fillchar(pd,sizeof(pd),false);
fillchar(b,sizeof(b),);
fillchar(d,sizeof(d),$7f);
l:=; r:=; pd[s]:=true; b[l]:=s; d[s]:=;
while l<=r do
begin
u:=b[l];
for v:=ord('A') to ord('z') do
if (a[u,v]<) and (d[u]+a[u,v]<d[v]) then
begin
d[v]:=d[u]+a[u,v];
if not pd[v] then
begin
inc(r);
b[r]:=v;
pd[v]:=true;
end;
end;
inc(l);
pd[u]:=false;
end;
end;
begin
fillchar(flag,sizeof(flag),false);
fillchar(a,sizeof(a),$7f);
readln(m);
for i:= to m do
begin
readln(ch,space,ch2,space,x);
if x>a[ord(ch),ord(ch2)] then continue;
a[ord(ch),ord(ch2)]:=x;
a[ord(ch2),ord(ch)]:=x;
flag[ord(ch)]:=true;
flag[ord(ch2)]:=true;
end;
min:=maxlongint;
spfa(ord('Z'));
for i:=ord('A') to ord('Y') do
if flag[i] then
if d[i]<min then
begin
ans:=chr(i);
min:=d[i];
end;
writeln(ans,' ',min);
end.
最新文章
- angular + easyui 做界面验证
- 2_MVC+EF+Autofac(dbfirst)轻型项目框架_用户权限验证
- HDFS的Trash回收站功能
- java初探/java读取文件
- NSString几个函数
- mysql 建立索引场合及索引使用
- android 自定义折线图
- 【HDOJ】【3709】Balanced Bumber
- SQL Server 日期 时间类型
- Oracle EBS-SQL (MRP-3):检查例外信息查询_建议取消_采购订单.sql
- 如何制作一个类似Tiny Wings的游戏(2) Cocos2d-x 2.1.4
- HTML的各种基本标签
- Spring基础学习,附例子代码讲解
- 全面剖析XMLHttpRequest对象
- animator 新动画
- 1.gil全局解释器锁, 2. 死锁与递归锁 3. 信号量 4. Event事件 5. 线程queue
- SQL基础日期函数
- HDU 6199 2017沈阳网络赛 DP
- Mounting VMDK files in Linux
- 【lightoj-1025】The Specials Menu(区间DP)
热门文章
- JSP-Runood:JSP 客户端请求
- Coursera Algorithms week4 基础标签表 练习测验:Java autoboxing and equals
- js产生随机数教程
- codevs1163访问艺术馆(树形dp)
- 能力 or say 职业 规划
- knockjs
- easyui -tree的详细讲解
- 【题解】永无乡 [HNOI2012] [BZOJ2733] [P3224]
- JavaScript--改变 HTML 样式
- Parameter index out of range (1 >; number of parameters, which is 0).