Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.33 KB | None | 0 0
  1. def bfs_(vertexs, start, end):
  2.     if(start == end):
  3.         return 0
  4.     list_dist = [ 0 for i in range(len(vertexs))]
  5.     list_ = [start]
  6.     passedVertexs = set()
  7.     passedVertexs.add(start)
  8.     while(list_):
  9.         el = list_.pop(0)
  10.         for x in vertexs[el]:
  11.             if x in passedVertexs:
  12.                 continue
  13.             list_.append(x)
  14.             list_dist[x] = list_dist[el] + 1
  15.             passedVertexs.add(x)
  16.     return list_dist[end]
  17.  
  18. def bfs(vertexs):
  19.     dist = []
  20.  
  21.     for j in range(len(vertexs)):
  22.         dist.append(bfs_(vertexs, 0, j))
  23.  
  24.     line = ""
  25.     for i in range(len(vertexs)):
  26.         line += str(dist[i]) + " "
  27.     return line
  28.  
  29.  
  30. with open("pathbge1.in", "r") as inp:
  31.     list_adg = []
  32.     line = inp.readline()
  33.     n = int(line.split()[0])
  34.     m = int(line.split()[1])
  35.     edges = []
  36.     for i in range(m):
  37.         edge = inp.readline().split()
  38.         edge = [int(edge[0]), int(edge[1])]
  39.         edges.append(edge)
  40.     vertexs = dict()
  41.     for i in range(n):
  42.         vertexs_ = []
  43.         vertexs[i] = vertexs_
  44.     for i in range(n):
  45.         for j in range(n):
  46.             if [i + 1, j + 1] in edges:
  47.                 vertexs[i].append(j)
  48.                 vertexs[j].append(i)
  49.     line = bfs(vertexs)
  50.  
  51.     with open("pathbge1.out", "w") as out:
  52.         out.write(line)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement