Pagini recente » Cod sursa (job #1310422) | Cod sursa (job #1575711) | Cod sursa (job #598562) | Cod sursa (job #920562) | Cod sursa (job #2505503)
def cmp( x ):
return -x[1]
def dfs( nod ):
global u
ultim[nod] = -1
for i in v[nod]:
if ultim[i] == 0:
dfs( i )
ultim[nod] = u
u += 1
def ctc_dfs(nod):
ctc[nod] = co
for i in v2[nod]:
if ctc[i] == 0:
ctc_dfs( i )
fin = open( "ctc.in" )
s = fin.readline().split()
n = int( s[0] )
v = [ [] for i in range (0, n) ]
v2 = [ [] for i in range (0, n) ]
for i in fin:
s = [ int(x)-1 for x in i.split() ]
v[ s[0] ].append( s[1] )
v2[ s[1] ].append( s[0] )
fin.close()
ultim = [0] * n
u = 1
for i in range( 0, n ):
if ultim[i] == 0:
dfs( i )
# print( v )
# print( ultim)
ultim = [ ( i, ultim[i] ) for i in range( 0, n ) ]
ultim.sort( key=cmp )
# print( v2 )
# print( ultim)
co = 0
ctc = [0] * n
for i in ultim:
if ctc[ i[0] ] == 0:
co += 1
ctc_dfs( i[0] )
fout = open( "ctc.out", "w" )
fout.write( str( co ) + '\n' )
for i in range( 1, n + 1 ):
for j in range( 0, n ):
if i == ctc[j]:
fout.write( str( j+1 ) + " ")
fout.write( '\n' )
fout.close()