Cod sursa(job #2658566)

Utilizator SmitOanea Smit Andrei Smit Data 14 octombrie 2020 13:27:54
Problema BFS - Parcurgere in latime Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 1.12 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('bfs.in') as f:
    N, M, S = [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 un arc de la x la y
        L[x].append(y)#il adaug pe y la lista de vecini a lui x
        #daca aveam un graf neorientat, il adaugam si pe x in lista de vecini ai lui y

q = []
sol = [-1]*100001#initial nu am ajuns la niciun nod
def BFS():
    sol[S] = 0#distanta de la nodul de start la el insusi este 0
    q.append(S)
    while q!=[]:#cat timp coada nu este vida
        x = q.pop(0)
        for i in range(len(L[x])):#parcurgem toti vecinii lui x
            y = L[x][i]
            if sol[y]==-1:
                sol[y] = sol[x]+1
                q.append(y)

#Apelam functia BFS
BFS()

#acum afisam distantele calculate
rez = ""
for i in range(1, N+1):
    rez+=str(sol[i])
    rez+=" "
rez+="\n"
print(rez)