The error you’re getting is that self.adj doesn’t already have a key 0. You’re trying to append to a list that doesn’t exist yet.
Consider using a defaultdict instead, replacing this line (in __init__):
self.adj = {}
with this:
self.adj = defaultdict(list)
You’ll need to import at the top:
from collections import defaultdict
Now rather than raise a KeyError, self.adj[0].append(edge) will create a list automatically to append to.
The defaultdict solution is better.
But for completeness you could also check and create empty list before the append.
Add the + lines:
+ if not u in self.adj.keys():
+ self.adj[u] = []
self.adj[u].append(edge)
.
.