Cod sursa(job #3162189)

Utilizator tibi48Sanda Marian-Tiberiu tibi48 Data 28 octombrie 2023 15:55:46
Problema BFS - Parcurgere in latime Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 1.3 kb
class Graf:
    def __init__(self):
        f = open("bfs.in", "r")
        [n, m, self.s]=f.readline().split(" ")
        n=int(n)
        m=int(m)
        self.s=int(self.s)

        listaMuchii = f.read().split("\n")
        for i in range(m):
            listaMuchii[i]=listaMuchii[i].split()
            listaMuchii[i][0]=int(listaMuchii[i][0])-1
            listaMuchii[i][1]=int(listaMuchii[i][1])-1

        self.graph={}
        for i in range(n):
            self.graph[i+1]=[]

        for i in listaMuchii:
            self.graph[i[0]+1].append(i[1]+1)

        f.close()

    def BFS(self):

        visited = [False] * (max(self.graph)+1)
        distance={node: -1 for node in self.graph}
        queue=[]
        outputBFS=[]

        queue.append(self.s)
        visited[self.s]=True
        distance[self.s]=0

        while queue:

            self.s=queue.pop(0)
            outputBFS.append(self.s)

            for i in self.graph[self.s]:
                if visited[i] == False:
                    queue.append(i)
                    visited[i] = True
                    distance[i]=distance[self.s]+1

        return outputBFS, distance

g=Graf()
outputBFS, distance=g.BFS()
f = open("bfs.out", "w")
f.write(' '.join(map(str, distance.values())))
f.close()