Advertisement
Guest User

Untitled

a guest
Apr 8th, 2020
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.58 KB | None | 0 0
  1. class Queue:
  2.     def __init__(self, n):
  3.         self.S = [None] * n
  4.         self.n = n
  5.         self.elements = 0
  6.         self.head = 0
  7.  
  8.     def enqueue(self, x):
  9.         self.S[(self.head + self.elements) % self.n] = x
  10.         self.elements += 1
  11.  
  12.     def dequeue(self):
  13.         a = self.S[self.head]
  14.         self.head = (self.head + 1) % self.n
  15.         self.elements -= 1
  16.         return a
  17.  
  18.     def is_empty(self):
  19.         return self.elements == 0
  20.  
  21.  
  22. class pkt:
  23.     def __init__(self, nr):
  24.         self.nr = nr
  25.         self.visited = False
  26.         self.d = -1
  27.         self.parent = None
  28.  
  29.  
  30. class graf:
  31.     def __init__(self):
  32.         self.arr = []
  33.  
  34.  
  35. def BFS(G, s):
  36.     Q = Queue(len(G))
  37.     Graf = graf()
  38.     F = [[] for _ in range(len(G))]
  39.     for i in range (len(G)):
  40.         F[i] = [None] * (2)
  41.     for i in range(len(G)):
  42.         x = pkt(i)
  43.         Graf.arr.append(x)
  44.     Graf.arr[s].d = 0
  45.     Graf.arr[s].visited = True
  46.     Q.enqueue(Graf.arr[s])
  47.     while not Q.is_empty():
  48.         u = Q.dequeue()
  49.         for i in range(len(G)):
  50.             if G[u.nr][i] == 1: # znaczy że z wierzchołka u idzie krawędz do wierzchołka i
  51.                 if not Graf.arr[i].visited:
  52.                     Graf.arr[i].visited = True
  53.                     Graf.arr[i].d = u.d + 1
  54.                     Graf.arr[i].parent = u.nr
  55.                     Q.enqueue(Graf.arr[i])
  56.     for i in range(len(G)):
  57.         F[i][0]=Graf.arr[i].parent
  58.         F[i][1]=Graf.arr[i].d
  59.     return F
  60.  
  61.  
  62. G = [[0, 1, 1, 0],
  63.      [0, 0, 0, 1],
  64.      [0, 1, 0, 1],
  65.      [0, 0, 0, 0]]
  66. print( BFS(G,0) )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement