比赛 搜索题... 评测结果 ATWTTTTAAT
题目名称 最大的湖 最终得分 30
用户昵称 思邈然 运行时间 6.009 s
代码语言 Pascal 内存使用 0.17 MiB
提交时间 2014-11-04 19:40:36
显示代码纯文本
program cogs155;
var
map:array[0..100,0..100]of 0..1;
ax,ay:array[1..100]of integer;
n,m,k,i,ans:integer;
procedure dfs(s,x,y:integer);
begin
 if ans<s then ans:=s;
  if (x=n)and(y=m) then exit
   else begin
   if (map[x+1,y]=1)and(x<n) then begin
     map[x+1,y]:=0;
     dfs(s+1,x+1,y);
     map[x+1,y]:=1;  end;
   if (map[x-1,y]=1)and(x>1) then begin
     map[x-1,y]:=0;
     dfs(s+1,x-1,y);
     map[x-1,y]:=1;  end;
   if (map[x,y+1]=1)and(y<m) then begin
     map[x,y+1]:=0;
     dfs(s+1,x,y+1);
     map[x,y+1]:=1;  end;
   if (map[x,y-1]=1)and(y>1) then begin
     map[x,y-1]:=0;
     dfs(s+1,x,y-1);
     map[x,y-1]:=1;  end;
     end;
end;
begin
assign(input,'lake.in');reset(input);
assign(output,'lake.out');rewrite(output);
readln(n,m,k);
fillchar(map,sizeof(map),0);
for i:=1 to k do begin
readln(ax[i],ay[i]);map[ax[i],ay[i]]:=1;end;
for i:=1 to k do begin
map[ax[i],ay[i]]:=0;
dfs(1,ax[i],ay[i]);
map[ax[i],ay[i]]:=1;end;
writeln(ans);
close(input);close(output);
end.