Pagini recente » Cod sursa (job #693277) | Cod sursa (job #1439893) | Cod sursa (job #1980054) | Cod sursa (job #1378700) | Cod sursa (job #2887257)
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]))
BFS()