Cod sursa(job #3368554)

Utilizator EmimaCurcan Sara Emima Emima Data 15 octombrie 2026 08:27:27
Problema BFS - Parcurgere in latime Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 1.03 kb
from collections import deque

def listaAdiacenta(n,m,fisier,orientat):
    d={}
    for line in fisier:
        numere=line.split()
        u,v=int(numere[0]), int(numere[1])
        if u not in d:
            d[u]=[]
        if v not in d[u]:
            d[u].append(v)

        if not orientat:
            if v not in d:
                d[v]=[]
            if u not in d[v]:
                d[v].append(u)
    return d


def bfs(d,s,dist,tata):
    coada=deque([s])
    dist[s]=0
    tata[s]=0
    while coada:
        i=coada.popleft()
        if i in d:
            for vecin in d[i]:
                if dist[vecin]==-1:
                    coada.append(vecin)
                    dist[vecin]=dist[i]+1
                    tata[vecin]=i
    return dist

fin=open('bfs.in', 'r')
fout=open('bfs.out', 'w')
n,m,s=(int(x) for x in fin.readline().split())
orientat=True
d=listaAdiacenta(n,m,fin,orientat)
dist=[-1]*(n+1)
tata=[-1]*(n+1)
dist=bfs(d,s,dist,tata)
fout.write(" ".join(str(x) for x in dist[1:]))