Показать сообщение отдельно
Старый 17.10.2003, 20:16   #1   
Форумец
 
Сообщений: 118
Регистрация: 04.05.2003
Возраст: 39

Зиалот вне форума Не в сети
И еще задачка.:)

Задачка простенькая, но до меня не до конца доходит.
Дано n городов, дан двумерный массив n*n состоящий из 1 и 0.
1 - есть связь с городом, 0- нет.
например первый город будет связан со 2м городом и с 5тым
например второй только с 1ым.
0 1 0 0 1
1 0 0 0 0
0 0 0 1 1
0 0 1 0 0
1 0 1 0 0
нужно вычислить все ли города связаны.
в данном примере ответ будет ДА.
В общем я ее решил рекурсией...но это не рационально.
поскольку работает максимум на n=50.

Program ilk;
var n,i1,j1:byte;
a:array[1..50,1..50] of byte;
f:text;
mn:set of byte;
Procedure poisk(j:byte);
var i:byte;
begin
if mn<>[] then
for i:=1 to n do
if a[j,i]=1 then
begin
a[j,i]:=0;
a[i,j]:=0;
mn:=mn-[i];
poisk(i);
end;
end;

BEGIN
assign(f,'input.txt');
reset(f);
readln(f,n);
mn:=[2..n];
for i1:=1 to n do begin
for j1:=1 to n do
read(f,a[i1,j1]);
readln(f);
end;

poisk(1);
close(f);

assign(f,'output.txt');
rewrite(f);
if mn=[] then
write(f,'Da')
else
write(f,'Net');
close(f);
END.помогите плиз решить по-другому -не рекурсией. :confused:
  Ответить с цитированием