Cod sursa(job #2658595)

Utilizator SmitOanea Smit Andrei Smit Data 14 octombrie 2020 15:08:54
Problema Parcurgere DFS - componente conexe Scor 45
Compilator py Status done
Runda Arhiva educationala Marime 1.23 kb

L = []

for i in range(1,100001):
    L.append([])#intial niciun nod nu are vecini


viz = [False] * 100001#o metoda mai simpla de a initializa

with open('dfs.in') as f:
    N, M = [int(x) for x in next(f).split()]#N = numarul de noduri, M = numarul de muchii
    array = []
    for line in f:  # read rest of lines
        linie = [int(x) for x in line.split()]
        x = linie[0]
        y = linie[1]#acum urmeaza sa trasam muchie de la x la y
        print("x = ", x, ", type(x) = ", type(x))
        print("y = ", y, ", type(y) = ", type(y))
        L[x].append(y)#il adaug pe y la lista de vecini a lui x
        L[y].append(x)#il adaug pe x la lista de vecini a lui y
        #daca aveam un graf orientat, il adaugam doar pe y la lista lui x, nu si invers
for i in range(1, N+1):
    print("Lista lui ", i, ": ", L[i])


def DFS(x):
    viz[x] = True
    for vecin_x in L[x]:
        if viz[vecin_x]==False:
            DFS(vecin_x)

#acum numaram cate componente conexe exista
nr_comp_conexe = 0
for i in range(1, N+1):
    if viz[i]==False:
        DFS(i)#practic DFS este o functie care "marcheaza" toti vecinii lui i, si toti vecinii vecinilor lui i, etc
        nr_comp_conexe+=1

f = open("dfs.out", "w")
f.write(str(nr_comp_conexe))
f.close()