1class Solution:2def reachableNodes(3self, n: int, edges: List[List[int]], restricted: List[int]4) -> int:5# ignore restricted node6# bfs from 078# O(E), EDITED: the time complexity here is wrong, plz see my comment9adj_dict = collections.defaultdict(list)10for u, v in edges:11if u in restricted or v in restricted: # EDITED: not O(1)12continue13adj_dict[u].append(v)14adj_dict[v].append(u)1516# O(V + E)17queue = collections.deque([0])18visited = {0}19while queue:20cur = queue.popleft()21for neighbor in adj_dict[cur]:22if neighbor in visited:23continue24visited.add(neighbor)25queue.append(neighbor)2627return len(visited)