Cod sursa(job #3368094)

Utilizator mitoceanuci@gmail.comMitoceanu Ciprian [email protected] Data 13 octombrie 2026 11:03:35
Problema BFS - Parcurgere in latime Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 1.01 kb
from collections import deque

def citireDate():
    def extrage_numere():
        with open("bfs.in") as f:
            for linie in f:
                for cuvant in linie.split():
                    yield int(cuvant)
    
    gen = extrage_numere()
    
    n = next(gen)
    m = next(gen)
    s = next(gen)

    graf = [[] for i in range(n + 1)]

    for i in range(m):
        x = next(gen)
        y = next(gen)
        graf[x].append(y)

    return n, m, s, graf


def bfs(nod_start, n, graf):
    distante = [-1] * (n + 1)

    distante[nod_start] = 0

    coada = deque([nod_start])

    while coada:
        nod = coada.popleft()
        for vecin in graf[nod]:
            if distante[vecin] == -1:
                distante[vecin] = distante[nod] + 1
                coada.append(vecin)
    return distante


n, m, s, graf = citireDate()

distante = bfs(s,n,graf)

with open("bfs.out", "w") as f:
    rezultat = " ".join(map(str, distante[1:]))
    f.write(rezultat+"\n")