Cod sursa(job #2924775)

Utilizator avethegamerAveTheGamer avethegamer Data 10 octombrie 2022 17:41:15
Problema BFS - Parcurgere in latime Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 1.18 kb
def citire_lista_adiacenta(orientat: bool = False, fisier: str = "bfs.in"):
    with open(fisier) as f:
        nr_noduri, nr_muchii, start = [int(x) for x in f.readline().split()]
        lista = [[] for _ in range(nr_noduri + 1)]
        for i in range(nr_muchii):
            linie = f.readline().split()
            if orientat:
                lista[int(linie[0])].append(int(linie[1]))
            else:
                lista[int(linie[0])].append(int(linie[1]))
                lista[int(linie[1])].append(int(linie[0]))
    return lista, start

def BFS():
    lista, start = citire_lista_adiacenta(orientat=True)
    vizitat = [False] * len(lista)
    coada = []
    coada.append(start)
    vizitat[start] = True
    distanta = [None] * len(lista)
    distanta[start] = 0
    while coada:
        nod = coada.pop(0)
        for vecin in lista[nod]:
            if not vizitat[vecin]:
                coada.append(vecin)
                vizitat[vecin] = True
                distanta[vecin] = distanta[nod] + 1
    for i in range(1, len(distanta)):
        if distanta[i] is None:
            distanta[i] = -1
    print(*distanta[1:])

if __name__ == "__main__":
    BFS()

# expected output:
# 1 0 2 -1 1