Cod sursa(job #2887258)

Utilizator StudentFMIKayed Amar StudentFMI Data 9 aprilie 2022 08:56:53
Problema BFS - Parcurgere in latime Scor 30
Compilator py Status done
Runda Arhiva educationala Marime 1.19 kb
from queue import Queue

def BFS():

    with open("bfs.in", "r") as f:
        
        n, m, s = [int(i) for i in f.readline().split()]

        d = {}

        linie = f.readline()

        while linie != "":

            x, y = [int(i) for i in linie.split()]

            if x not in d.keys():
                d[x] = []
            d[x].append(y)

            linie = f.readline()
        

    with open("bfs.out", "w") as g:
        q = Queue(maxsize = n)
        
        dist = {i: 1<<64 for i in d.keys()}
        vizitat = {i: False for i in d.keys()}

        q.put(s)
        vizitat[s] = True
        dist[s] = 0

        while not q.empty():
            nod = q.get()

            for vecin in d[nod]:
                if vizitat[vecin] == False:
                    q.put(vecin)
                    vizitat[vecin] = True
                    dist[vecin] = dist[nod] + 1            

        for i in vizitat.keys():
            if vizitat[i] == False:
                dist[i] = -1
        
        minim, maxim = min(d.keys()), max(d.keys())
        for i in range(minim, maxim + 1):
            g.write("{} ".format(dist[i]))

    return 0

BFS()