Pagini recente » Cod sursa (job #3364891) | Cod sursa (job #3367176) | Cod sursa (job #3367175) | Cod sursa (job #3367079) | Cod sursa (job #3367172)
def citire(fisier):
fin=open(fisier,'r')
nms=[int(x) for x in fin.readline().split()]
n=nms[0]
m=nms[1]
s=nms[2]
muchii=[[int(x) for x in fin.readline().split()] for _ in range(m)]
fin.close()
return n,s,muchii
def creare_liste(n,muchii,orientat):
liste=[[] for _ in range(n+1)]
for m in muchii:
liste[m[0]].append(m[1])
if not orientat:
liste[m[1]].append(m[0])
return liste
def bfs(n,liste,s):
distante=[-1]*(n+1)
coada=[s]
distante[s]=0
p=0
while p<len(coada):
x=coada[p]
p+=1
for y in liste[x]:
if distante[y]==-1:
distante[y]=distante[x]+1
coada.append(y)
return distante
def afisare(distante,n,fisier):
fout=open(fisier,'w')
fout.write(" ".join([str(distante[i]) for i in range(1,n+1)]))
fout.close()
n,s,muchii=citire("bfs.in")
orientat=True
liste=creare_liste(n,muchii,orientat)
distante=bfs(n,liste,s)
afisare(distante,n,"bfs.out")