program poduri; var pod:array[1..100,1..3] of integer; np,i,ni,j,l,t,tmp:integer; ins,x:array[1..50] of integer; vb1,vb2,vb:boolean; procedure back(k:integer); begin if k>np then begin for i:=1 to np do write(x[i],'-'); writeln; readln end else begin for i:=1 to np do begin vb:=true; for j:=1 to k-1 do if x[j]=i then vb:=false; if vb then if k=1 then begin x[k]:=i; back(k+1); end else if (pod[x[k-1],3]=pod[i,2]) or (pod[x[k-1],3]=pod[i,3]) then begin if pod[x[k-1],3]=pod[i,3] then begin tmp:=pod[i,3]; pod[i,3]:=pod[i,2]; pod[i,2]:=tmp end; x[k]:=i; back(k+1); end; end end; end; begin write(' numarul de poduri: ');readln(np); ni:=0; for i:=1 to np do begin write(' pod de la insula :');readln(pod[i,2]); write('la insula:');readln(pod[i,3]); pod[i,1]:=i; vb1:=false; vb2:=false; for l:=1 to ni do begin if ins[l]=pod[i,2] then vb1:=true; if ins[l]=pod[i,3] then vb2:=true; end; if not vb1 then begin ni:=ni+1; ins[ni]:=pod[i,2]; end; if not vb2 then begin ni:=ni+1; ins[ni]:=pod[i,3]; end; end; writeln('numarul de insule este:',ni); back(1) end.