Pagini recente » Cod sursa (job #942295) | Cod sursa (job #817715) | Cod sursa (job #2686662) | Cod sursa (job #2635081) | Cod sursa (job #2658567)
L = []
for i in range(1,100001):
L.append([])#intial niciun nod nu are vecini
viz = [False] * 100001#o metoda mai simpla de a initializa
with open('bfs.in') as f:
N, M, S = [int(x) for x in next(f).split()]#N = numarul de noduri, M = numarul de muchii
array = []
for line in f: # read rest of lines
linie = [int(x) for x in line.split()]
x = linie[0]
y = linie[1]#acum urmeaza sa trasam un arc de la x la y
L[x].append(y)#il adaug pe y la lista de vecini a lui x
#daca aveam un graf neorientat, il adaugam si pe x in lista de vecini ai lui y
q = []
sol = [-1]*100001#initial nu am ajuns la niciun nod
def BFS():
sol[S] = 0#distanta de la nodul de start la el insusi este 0
q.append(S)
while q!=[]:#cat timp coada nu este vida
x = q.pop(0)
for i in range(len(L[x])):#parcurgem toti vecinii lui x
y = L[x][i]
if sol[y]==-1:
sol[y] = sol[x]+1
q.append(y)
#Apelam functia BFS
BFS()
#acum afisam distantele calculate
rez = ""
for i in range(1, N+1):
rez+=str(sol[i])
rez+=" "
rez+="\n"
f = open("bfs.out", "w")
f.write(rez)
f.close()