type al=string[20];
var i,j,k,m,n:longint;
f1:array[1..10000,1..2]of al;
xx:string;
x,y:al;
a:array[1..6,1..2]of al;
b:array[1..6]of byte;
procedure fen(xy:string;var x1,y1:al);
var k1:longint;
begin
k1:=pos(' ',xy);
y1:=copy(xy,k1+1,length(xy)-k1);
x1:=copy(xy,1,k1-1);
end;
procedure zhuyao;
var i1,j1,h1,h2,t1,t2,p,q:longint;
w,w1,w2:al;
f2:array[1..10000,1..2]of byte;
pan:boolean;
begin
pan:=false;
h1:=0;t1:=1;h2:=0;t2:=1;
f1[1,1]:=x;
f2[1,1]:=0;
f1[1,2]:=y;
f2[1,2]:=0;
while (h1<t1)or(h2<t2) do
begin
if h1<t1 then begin
inc(h1);
for i:=1 to m do
begin
p:=pos(a[i,1],f1[h1,1]);
if (p>0) then begin
w:=f1[h1,1];
delete(w,p,b[i]);
insert(a[i,2],w,p);
for j:=1 to t1 do
if f1[j,1]=w then pan:=true;
if pan=false then begin
inc(t1);
f1[t1,1]:=w;
f2[t1,1]:=f2[h1,1]+1;
end;
pan:=false;
for j:=1 to t2 do
if f1[t1,1]=f1[j,2] then
begin
q:=f2[t1,1]+f2[j,2];
if q<11 then
begin
writeln(q);
halt;
end;
end;
end;
if f2[t1,1]>=11 then h1:=t1+1;
end;
end;
if h2<t2 then begin
inc(h2);
for i:=1 to m do
begin
p:=pos(a[i,2],f1[h2,2]);
if (p>0) then begin
w:=f1[h2,2];
delete(w,p,length(a[i,2]));
insert(a[i,1],w,p);
for j:=1 to t2 do
if f1[j,2]=w then pan:=true;
if pan=false then begin
inc(t2);
f1[t2,2]:=w;
f2[t2,2]:=f2[h2,2]+1;
end;
pan:=false;
for j:=1 to t1 do
if f1[t2,2]=f1[j,1] then
begin
q:=f2[t2,2]+f2[j,1];
if q<11 then
begin
writeln(q);
halt;
end;
end;
end;
if f2[t2,2]>=11 then h2:=t2+1;
end;
end;
end;
end;
begin
readln(xx);
m:=0;
k:=pos(' ',xx);
y:=copy(xx,k+1,length(xx)-k);
x:=copy(xx,1,k-1);
for i:=1 to 7 do
begin
inc(m);
readln(xx);
if length(xx)=0 then break;
fen(xx,a[m,1],a[m,2]);
b[m]:=length(a[m,1]);
end;
m:=m-1;
if x=y then
begin
writeln(0);
halt;
end;
zhuyao;
writeln('NO ANSWER!');
end.
无限痛苦,就是过不去。
中间过程的string长度可能超过20。
我刚开始就是这么WA:80的。