def dfs(start, graph):
    """
    Does depth-first search, returning a set of all nodes seen.
    Takes: a graph in node --> [neighbors] form.
    """
visited, worklist = set(), [start]
while worklist:
    node = worklist.pop()
if node not in visited:
    visited.add(node)
worklist.extend(graph[node])
Учитывая n кортежей, представляющих пары, вернуть список со связанными кортежами