奇怪的电梯

题目

https://www.luogu.com.cn/problem/P1135

思路

\(Floyd\)算法求最短路即可
\(Floyd\)算法不会的看这里:

链接🔗

https://www.cnblogs.com/wangyuliang/p/9216365.html
或这里:

链接🔗

https://www.jianshu.com/p/f73c7a6f5a53

代码

var
 a:array[-1002..1003,-1002..1003] of longint;
 n,y,z,i,j,x,k:longint;
begin
 readln(n,y,z);
 for i:=1 to n do
  for j:=1 to n do
   a[i,j]:=1000000;
 for i:=1 to n do a[i,i]:=0;
 for i:=1 to n do
  begin
   read(x);
   if i+x<=n then a[i,i+x]:=1;
   if i-x>=1 then a[i,i-x]:=1;
  end;
 for k:=1 to n do
  for i:=1 to n do
   for j:=1 to n do
    if a[i,j]>a[i,k]+a[k,j] then a[i,j]:=a[i,k]+a[k,j];
 if a[y,z]=1000000 then write(-1) else write(a[y,z]);
end.
posted @ 2020-07-10 14:15  离线中……  阅读(83)  评论(0编辑  收藏  举报