Pagini recente » Cod sursa (job #2970767) | Cod sursa (job #1786210) | Cod sursa (job #2855681) | Cod sursa (job #228806) | Cod sursa (job #2503980)
def cautare( nod ):
for i in v[nod]:
if i not in vecini:
vecini.add( i )
cautare( i )
def dfs( nod0, nod ):
if nod == nod0:
return 1
vizitat[nod] = 1
for i in v[nod]:
if vizitat[i] == 0:
nr = dfs( nod0, i )
if nr == 1:
return nr
fin = open( "ctc.in", "r" )
s = fin.readline()
s = [ int(x) for x in s.split() ]
n, m = s
v = [ list() for i in range( n ) ]
for i in fin:
l = [int(x) - 1 for x in i.split()]
v[l[0]].append(l[1])
fin.close()
componente = [0] * n
nr_comp = 0
vecini = set()
for i in range( 0, n ):
if componente[i] == 0:
nr_comp += 1
componente[i] = nr_comp
vecini.clear()
cautare( i )
for j in vecini:
vizitat = [0] * n
if dfs( i, j ) == 1:
componente[j] = nr_comp
print( nr_comp, componente)
fout = open( "ctc.out", "w" )
fout.write( str( nr_comp ) + '\n' )
for i in range( 1, nr_comp + 1 ):
for j in range( 0, len(componente) ):
if componente[j] == i:
fout.write( str(j+1) + " " )
fout.write( '\n')
fout.close()