Cod sursa(job #2505553)

Utilizator ReksioCroftOctavian Florin Staicu ReksioCroft Data 7 decembrie 2019 00:03:30
Problema Componente tare conexe Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 0.93 kb
def dfs( nod ):
    stack.append( nod )
    vizitat[nod] = True
    for i in v[nod]:
        if vizitat[i] == False:
            dfs( i )

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()

vizitat = [False] * n
stack = []
for i in range( 0, n ):
    if vizitat[i] == False:
        dfs( i )

co = 0
ctc = [0] * n
for i in range( n-1, -1, -1 ):
    if ctc[ stack[i] ] == 0:
        co += 1
        ctc_dfs( stack[i] )

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()