Cod sursa(job #3316326)

Utilizator eva.gavriliuGavriliu Eva Mihaela eva.gavriliu Data 18 octombrie 2025 13:32:29
Problema BFS - Parcurgere in latime Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 0.97 kb
from collections import deque

def bfs(listaAdiacenta, nodStart):
    queue = deque([nodStart])
    noduriVizitate = {nodStart}
    distanta = {nodStart: 0}
    while queue:
        nodCurent = queue.popleft()
        for v in listaAdiacenta[nodCurent]:
            if v not in noduriVizitate:
                noduriVizitate.add(v)
                queue.append(v)
                distanta[v] = distanta[nodCurent] + 1
    return distanta

with open("bfs.in", "r") as f:
    linie = f.readline()
    n,m,s = map(int, linie.split())
    listaAdiacenta = dict((_, []) for _ in range(1,n+1))
    for _ in range(m):
        linie = f.readline()
        a,b = map(int, linie.split())
        listaAdiacenta[a].append(b)

d = bfs(listaAdiacenta, s)
rezultate = []
for i in range(1, n + 1):
    if i not in d:
        rezultate.append("-1")
    else:
        rezultate.append(str(d[i]))
with open("bfs.out", "w") as f:
    f.write(" ".join(rezultate))