悲伤
but 悲伤顶个屁用
望大牛帮忙!!!!!
program ying;
type
re=record
p,b:longint;
end;
du=record
x,y:longint;
end;
var
data:array[0..501,0..501] of byte;
bp:array[1..500,1..500] of re;
pan:array[1..500,1..500] of byte;
i,j,n,m,x1,y1,x2,y2,xx,yy:longint;
dui:array[1..200000] of du;
top,now:longint;
s:ansistring;
f:array [1..8,1..2] of integer=((1,0),(1,1),(1,-1),(0,1),(0,-1),(-1,1),(-1,0),(-1,-1));
begin
readln(n,m);
readln(x1,y1);
readln(x2,y2);
fillchar(data,sizeof(data),0);
fillchar(pan,sizeof(pan),0);
for i:=1 to n do
begin
readln(s);
for j:=1 to m do
if s[j]='1' then
data[i,j]:=1
else if s[j]='2' then
data[i,j]:=2;
end;
for i:=1 to n do
for j:=1 to m do
begin
bp[i,j].p:=maxlongint;
bp[i,j].b:=maxlongint;
end;
now:=1;top:=1;
dui[1].x:=x1;
dui[1].y:=y1;
pan[x1,y1]:=1;
bp[x1,y1].b:=1;
bp[x1,y1].p:=0;
while now<>top+1 do
begin
xx:=dui[now].x;
yy:=dui[now].y;
pan[xx,yy]:=0;
for i:=1 to 8 do
begin
if (data[xx+f[i,1],yy+f[i,2]]<>0)
and ((bp[xx,yy].p+abs(data[xx,yy]-data[xx+f[i,1],yy+f[i,2]])<bp[xx+f[i,1],yy+f[i,2]].p)
or ((bp[xx,yy].p+abs(data[xx,yy]-data[xx+f[i,1],yy+f[i,2]])=bp[xx+f[i,1],yy+f[i,2]].p)and (bp[xx+f[i,1],yy+f[i,2]].b-1>bp[xx,yy].b))) then
begin
if pan[xx+f[i,1],yy+f[i,2]]=0 then
begin
inc(top);
if top > 200000 then
top:=top-200000;
dui[top].x:=xx+f[i,1];
dui[top].y:=yy+f[i,2];
pan[xx+f[i,1],yy+f[i,2]]:=1;
end;
bp[xx+f[i,1],yy+f[i,2]].p:=bp[xx,yy].p+abs(data[xx,yy]-data[xx+f[i,1],yy+f[i,2]]);
bp[xx+f[i,1],yy+f[i,2]].b:=bp[xx,yy].b+1;
end;
end;
inc(now);
if now>200000 then
now:=now-200000;
end;
if bp[x2,y2].b=maxlongint then
writeln(0,' ',0)
else writeln(bp[x2,y2].b,' ',bp[x2,y2].p);
end.
发现楼主一个错误,pascal的字符串长度上限为255,而题目的m<=500,因此你的输入就有问题。