Fri Jan 27, 2012 5:07 pm
anh thy - Code:
program bt;
const fi='mlt.inp';fo='mlt.out';
vx:array[1..4] of integer=(-1,1,0,0);
vy:array[1..4] of integer=(0,0,-1,1);
var a:array[1..100,1..100]of integer;
n,m,x,y,x1,y1,d,c,s,spt:integer;f:text;
kdong,kcot,kdt,qx,qy:array[1..100] of integer;
procedure doc;
var i,j:integer;
begin
assign(f,fi);reset(f);
readln(f,n,m);
for i:=1 to n do
for j:=1 to m do
readln(f,a[i,j]);
close(f);
assign(f,fo);rewrite(f);
end;
procedure hdrong;
begin
d:=1;c:=0;
end;
function nt(x,y:integer):boolean;
begin
if (x>=1) and (x<=n) and (y>=1) and (y<=m)
then nt:=true else nt:=false;
end;
procedure them(x,y:integer);
begin
inc(c);qx[c]:=x;qy[c]:=y;
end;
procedure lay(var x,y:integer);
begin
qx[d]:=x;qy[d]:=y;inc(d);
end;
procedure loang(x,y:integer;var s:integer);
var i,h:integer;
begin
hdrong;
them(x,y);
s:=1;
a[x,y]:=1;
while d<=c do
begin
lay(x,y);
for i:=1 to 4 do
begin
x1:=x+vx[i];
y1:=y+vy[i];
if (nt(x1,y1)) and (a[x1,y1]=0) then
begin
inc(s);
them(x1,y1);
a[x1,y1]:=1;
end;
end;
end;
end;
procedure xuli;
var i,j:integer;
begin
spt:=0;
for i:=1 to n do
for j:=1 to m do
begin
if a[i,j]=0 then
begin
inc(spt);
kdong[spt]:=i;
kcot[spt]:=j;
loang(i,j,s);
kdt[spt]:=s;
end;
end;
end;
procedure ghi;
var max,i:integer;
begin
writeln(f,spt);
max:=kdt[1];
for i:=2 to spt do
if max<kdt[i] then max:=kdt[i];
writeln(f,max);
for i:=1 to spt do
if max=kdt[i] then writeln(f,kdong[i],' ',kcot[i]);
end;
BEGIN
doc;xuli;ghi;close(f);
END.