Pagini recente » Cod sursa (job #2498465) | Cod sursa (job #372177) | Cod sursa (job #1001993) | Cod sursa (job #1450315) | Cod sursa (job #2658595)
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()