![]() |
|
#8
|
||||
|
||||
![]() program Project1;
{$APPTYPE CONSOLE} uses SysUtils,Dialogs; var People:array of array of byte; NNum:array of integer; View:array of boolean; Num:array of integer; n,s:integer; procedure Init; var x,y:integer; begin s:=0; Assign(input,'c:\summer.in'); Reset(input); Readln(n); SetLength(People,n,n); SetLength(Num,n); SetLength(NNum,n); SetLength(View,n); For y:=0 to n-1 do begin Num[y]:=0; View[y]:=false; NNum[y]:=0; For x:=0 to n-1 do begin Read(People[x,y]); end; end; close(input); end; procedure SaveResult; var i:integer; begin Assign(output,'c:\summer.out'); Rewrite(output); for i:=0 to n-1 do begin write(NNum[i]+1,' '); end; close(output); end; procedure Solve(ClonNum:array of integer; ClonView:array of boolean; p,len:integer); var i,k:integer; begin ClonNum[len]:=p; ClonView[p]:=true; len:=len+1; for i:=0 to n-1 do begin if (ClonView[i]=false) and (People[i,p]=1) then begin Solve(ClonNum,ClonView,i,len); end; end; if s<len then begin s:=len; NNum:=@ClonNum; end; end; var j,k:integer; begin Init; for j:=0 to n-1 do begin for k:=0 to n-1 do begin num[k]:=0; view[k]:=false; //Приходится обнулять end; Solve(Num,View,j,0); end; SaveResult; end. |