I'm tasked to print out all the predecessors that is connected to the current vertex after executing a BFS search in a given graph. However, I encountered a problem in my code in which it only prints out the last explored predecessor.
pred = {}
level = {}
def bfs(G, S):
kyu = deque([S])
pred[S] = []
level[S] = 0
while len(kyu) > 0:
curr = kyu.popleft()
neighbors = G[curr]
for neighbor in neighbors:
if neighbor not in pred:
pred[neighbor] = curr
level[neighbor] = level[curr] + 1 # added
kyu.append(neighbor)
def bfs_runner(G):
components = 0
for v in G:
if v not in pred:
components += 1
bfs(G, v)
return components
SAMPLE INPUT:
G = {
'A': ['B'],
'B': ['A', 'C', 'D'],
'C': ['B', 'E'],
'D': ['B', 'E'],
'E': ['C', 'D']
}
DESIRED OUTPUT:
pred = {
'A': [],
'B': ['A'],
'C': ['B'],
'D': ['B'],
'E': ['C', 'D']
}
MY OUTPUT:
pred = {
'A': [],
'B': ['A'],
'C': ['B'],
'D': ['B'],
'E': ['C']
}