|
|
back to boardLook at this solution. It's very easy and it works!!!!!!! var n:integer; i,j,c:integer; a:array[1..100,1..100] of boolean; b:array[1..100] of boolean; s:array[1..100] of integer; procedure ds(x:integer); var i:integer; begin b[x]:=false; for I:=1 to n do if (a[x,i]) and (b[i]) then ds(i); dec(c); s[c]:=x; end; begin for I:=1 to 100 do for J:=1 to 100 do a[i,j]:=false; for i:=1 to 100 do b[i]:=true; readln(n); for I:=1 to n do begin repeat read(c); if c<>0 then a[i,c]:=true; until c=0 end; c:=n+1; for I:=1 to n do if b[i] then ds(i); for i:=1 to n do begin write(s[i]); if i<n then write(' '); end; end. > Look at this solution. It's very easy and it works!!!!!!! > > var > n:integer; > i,j,c:integer; > a:array[1..100,1..100] of boolean; > b:array[1..100] of boolean; > s:array[1..100] of integer; > > procedure ds(x:integer); > var > i:integer; > begin > b[x]:=false; > for I:=1 to n do > if (a[x,i]) and (b[i]) then ds(i); > dec(c); > s[c]:=x; > end; > > begin > for I:=1 to 100 do for J:=1 to 100 do a[i,j]:=false; > for i:=1 to 100 do b[i]:=true; > > readln(n); > > for I:=1 to n do begin > repeat > read(c); > if c<>0 then a[i,c]:=true; > until c=0 > end; > > c:=n+1; > > for I:=1 to n do if b[i] then ds(i); > for i:=1 to n do begin > write(s[i]); > if i<n then write(' '); > end; > > end. if you shorter solution,please, post it here. I just don't know how to make it smaller. > if you shorter solution,please, post it here. I just don't know how > to make it smaller. |
|
|