Hi, here's your problem today. This problem was recently asked by Facebook: Given a directed graph, reverse the directed graph so all directed edges are reversed. Example: Input: A -> B, B -> C, A ->C Output: B->A, C -> B, C -> A Here's a starting point:
from collections import defaultdict

class Node:
  def __init__(self, value):
    self.adjacent = []
    self.value = value

def reverse_graph(graph):
  # Fill this in.

a = Node('a')
b = Node('b')
c = Node('c')

a.adjacent += [b, c]
b.adjacent += [c]

graph = {
    a.value: a,
    b.value: b,
    c.value: c,
}

for _, val in reverse_graph(graph).items():
  print(val.adjacent)
# []
# ['a', 'b']
# ['a']