ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1250. Захоронения в океане

What's wrong with that code ?? -> it's so obvious
Послано uuuuuuu 16 мар 2003 21:02
var
mapa:array[0..501,0..501]of -2..1;
x,y,wsp1,wsp2:longint;
ilewysp:longint;

procedure wczytaj;
var i,j:longint;
    zn:char;
    zb:text;
begin
 {assign(zb,'1250.in');
 reset(zb);     }
 readln({zb,}x,y,wsp1,wsp2);
 for i:=1 to y do
 begin
  for j:=1 to x do
   begin
   read({zb,}zn);
   if zn='#'then mapa[i,j]:=1
   end;
 readln{(zb)}
 end;
{close(zb)}
end;

procedure zaznacz(a,b:longint);
begin
mapa[a,b]:=-2;
 if (a-1>0)and(mapa[a-1,b]>0)then zaznacz(a-1,b);
 if (a+1<=x)and(mapa[a+1,b]>0)then zaznacz(a+1,b);
 if (b-1>0)and(mapa[a,b-1]>0)then zaznacz(a,b-1);
 if (b+1<=y)and(mapa[a,b+1]>0)then zaznacz(a,b+1);
end;

procedure sprawdz(a,b:longint);
begin
mapa[a,b]:=-2;
 if (a-1>0)and(mapa[a-1,b]>0)then zaznacz(a-1,b);
 if (a+1<=x)and(mapa[a+1,b]>0)then zaznacz(a+1,b);
 if (b-1>0)and(mapa[a,b-1]>0)then zaznacz(a,b-1);
 if (b+1<=y)and(mapa[a,b+1]>0)then zaznacz(a,b+1);
inc(ilewysp)
end;

procedure dfs(a,b:longint);
begin
mapa[a,b]:=-1;
 if (a-1>0)and(mapa[a-1,b]=0)then dfs(a-1,b)
 else if (a-1>0)and(mapa[a-1,b]=1)then sprawdz(a-1,b);

 if (a+1<=x)and(mapa[a+1,b]=0)then dfs(a+1,b)
 else if (a+1<=x)and(mapa[a+1,b]=1)then sprawdz(a+1,b);

 if (b-1>0)and(mapa[a,b-1]=0)then dfs(a,b-1)
 else if (b-1>0)and(mapa[a,b-1]=1)then sprawdz(a,b-1);

 if (b+1<=y)and(mapa[a,b+1]=0)then dfs(a,b+1)
 else if (b+1<=y)and(mapa[a,b+1]=1)then sprawdz(a,b+1);
end;

begin
while not eof do
begin
fillchar(mapa,sizeof(mapa),0);
wczytaj;
dfs(wsp1,wsp2);
writeln(ilewysp)
end
end.