评测结果 Result
测试点 #1:通过该测试点。得分20,耗时0ms,内存3178kB。
测试点 #2:错误的答案。得分0,耗时15ms,内存3170kB。
•该行正确答案长度:11 你的答案长度:0
•你是在整个测试点输出的 0% 地方开始出错的。
•这一行你是在第 1 个字符开始与标准输出不同的。
测试点 #3:通过该测试点。得分20,耗时15ms,内存3174kB。
测试点 #4:通过该测试点。得分20,耗时15ms,内存3178kB。
测试点 #5:通过该测试点。得分20,耗时0ms,内存3149kB。
源代码 Source code
view plaincopy to clipboardprint?
01.const dx:array[1..8] of integer=(-1,-1,-1,0,0,1,1,1);
02. dy:array[1..8] of integer=(-1,0,1,1,-1,-1,0,1);
03.var n,i,j,k:integer;
04. a:array[1..100,1..100] of integer;
06.procedure bfs(q,p:integer);
07.var i,j,k,r,t:integer;
08. stack:array[1..10000,1..2] of integer;
09. aa:array[1..100,1..100] of integer;
10.begin
11. aa:=a;
12. r:=0;t:=1; aa[q,p]:=2;stack[1,1]:=q;stack[1,2]:=p;
13. repeat
14. r:=r mod 1000+1;
15. for k:=1 to 8 do
16. begin
17. i:=stack[r,1]+dx[k];j:=stack[r,2]+dy[k];
18. if (i<=0) or (i>n) or (j<=0) or (j>n) then exit;
19. if (i=1) or (i=n) or (j=1) or (j=n) then
20. if aa[i,j]=0 then exit;
21. if aa[i,j]=0 then
22. begin
23. aa[i,j]:=2;
24. t:=t mod 1000+1;
25. stack[t,1]:=i;stack[t,2]:=j;
26. end;
27. end;
28. until r=t;
29. for i:=1 to n do
30. begin
31. for j:=1 to n do write(aa[i,j],' ');
32. writeln;
33. end;
34. halt;
35.end;
38.begin
39. read(n);
40. for i:=1 to n do
41. for j:=1 to n do read(a[i,j]);
42. for i:=2 to n-1 do
43. for j:=2 to n-1 do
44. if a[i,j]=0 then bfs(i,j);
45.end.