Cod sursa(job #3321528)

Utilizator teee0teo blezniuc teee0 Data 9 noiembrie 2025 23:01:06
Problema BFS - Parcurgere in latime Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 1.14 kb
def lista_graf(mod="neorientat", fisier="graf.in"):
    with open(fisier) as fin:
        #citire nr de noduri (ignora restu liniei)
        n = int(fin.readline().split()[0])

        #construire lista de liste cu goale
        la = [ [] for _ in range(n)]

        #construire listă propriu-zis

        for line in fin:
            x,y = [int(x) for x in line.split()]
            la[x-1].append(y)
            if mod!="orientat":
               la[y-1].append(x)
    return la

from collections import deque


def distanta_din_n():
    with open("bfs.in") as fin:
        nr_n, _, nod_initial = map (int, fin.readline().split() )
    la = lista_graf("orientat", fisier="bfs.in") 

    distante = [-1 for i in range(nr_n)]
    distante[nod_initial-1] = 0

    queue = deque()
    queue.append(nod_initial)

    while(len(queue) != 0):       #cât timp coada nu e goală
        nod_curent = queue.popleft()
        
        for x in la[nod_curent-1]:    #adaugă în coadă vecinii nevizitați
            if distante[x-1] == -1:
                queue.append(x)
                distante[x-1] = distante[nod_curent-1] + 1
    print(distante)

distanta_din_n()