Cod sursa(job #3367173)

Utilizator viflaem2Granat Andrei Ionut viflaem2 Data 6 octombrie 2026 13:25:07
Problema BFS - Parcurgere in latime Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 1.04 kb
def citire(fisier):
    fin=open(fisier,'r')
    nms=[int(x) for x in fin.readline().split()]
    n=nms[0]
    m=nms[1]
    s=nms[2]
    muchii=[[int(x) for x in fin.readline().split()] for _ in range(m)]
    fin.close()
    return n,s,muchii

def creare_liste(n,muchii,orientat):
    liste=[[] for _ in range(n+1)]
    for m in muchii:
        liste[m[0]].append(m[1])
        if not orientat:
            liste[m[1]].append(m[0])
    return liste

def bfs(n,liste,s):
    distante=[-1]*(n+1)
    coada=[s]
    distante[s]=0
    p=0
    while p<len(coada):
        x=coada[p]
        p+=1
        for y in liste[x]:
            if distante[y]==-1:
                distante[y]=distante[x]+1
                coada.append(y)
    return distante

def afisare(distante,n,fisier):
    fout=open(fisier,'w')
    fout.write(" ".join([str(distante[i]) for i in range(1,n+1)]))
    fout.close()


n,s,muchii=citire("bfs.in")
orientat=True
liste=creare_liste(n,muchii,orientat)
distante=bfs(n,liste,s)
afisare(distante,n,"bfs.out")