/ ALGORITHM

프로그래머스 - 전력망을 둘로 나누기

image-20230125210938097

def dfs(v):
    for i in graph[v]:
        if not visited[i]:
            visited[i]=True
            dfs(i)

def solution(n, wires):
    global graph, visited
    graph = [[] for _ in range(n+1)]
    for x,y in wires:
        graph[x].append(y)
        graph[y].append(x)

    diff = []

    for x,y in wires:
        graph[x].remove(y)
        graph[y].remove(x)

        visited = [False]*(n+1)

        for i in range(n+1):
          if graph[i]:
            start = i
            break

        visited[start] = True
        dfs(start)
        diff.append(abs(n-sum(visited)*2))
        
        graph[x].append(y)
        graph[y].append(x)
        
    return min(diff)