Cod sursa(job #2783163)

Utilizator andreiromanRoman Andrei-Marian andreiroman Data 13 octombrie 2021 21:36:14
Problema BFS - Parcurgere in latime Scor 80
Compilator py Status done
Runda Arhiva educationala Marime 1.06 kb
from collections import deque

def citiregraf(fisier):
    f = open(fisier)
    l = f.readline().rstrip().split(maxsplit= 2)
    n = int(l[0])
    m = int(l[1])
    s = int(l[2])
    ls_adiacenta = [[] for i in range(n+1)]
    for i in range(m):
        l1 = f.readline().rstrip().split(maxsplit= 1)
        x = int(l1[0])
        y = int(l1[1])
        ls_adiacenta[x].append(y)
    f.close()
    return ls_adiacenta, s

def bfs(ls, s):
    vizitat = [0 for i in range(len(ls))]
    dist = [0 for i in range(len(ls))]
    q = deque()
    q.append(s)
    vizitat[s] = 1
    dist[s] = 0
    while len(q) != 0:
        i = q.popleft()
        for j in ls[i]:
            if vizitat[j] == 0:
                q.append(j)
                vizitat[j] = 1
                dist[j] = dist[i] + 1
    for i in range(len(vizitat)):
        if i != 0 and vizitat[i] == 0:
            dist[i] = -1
    return dist[1:]

f = open("bfs.out", "w")
l = citiregraf("bfs.in")
rezultat = bfs(l[0], l[1])
for i in rezultat:
    f.write(str(i) + " ")

f.close()