奇怪的电梯
题目
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.