Вообще, `main` слишком огромная функция. Лучше сделать так

```python
def read_input():
    ....
    return graph

def dfs(graph, v, components): # no global vars!
    ...

def find_components():
    ...
    return components

def print_answer():
    ....

def main():
    g = read_input()
    c = find_components()
    print_answer(c)
```