, node.
(, X, Y, Z) node, node M, X, Y Z M.
, , node, , .
.
, , .
++.
, , , , .
:
bfs (start , end)
enqueue(start)
visited[start] = 1
while queue is NOT empty
currentNode = queue.front()
dequeue()
if(currentNode == end)
break
for each node adjacent to currentNode
if node is unvisited
visited[node] = visited[curr] + 1
enqueue(node)
parent[node].add(currentNode)
else if(currentNode is in same level as node parents)
parent[node].add(currentNode)
return