Pagini recente » Cod sursa (job #2201008) | Rating Rchiteanu Mihai Sebastian (Sebastiannr) | Cod sursa (job #1557376) | Cod sursa (job #1598843) | Cod sursa (job #3162189)
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()