from collections import deque
def bfs(start, graph):
queue = deque()
count = 1
visited = [False] * len(graph)
queue.append(start)
visited[start] = True
while queue:
current = queue.popleft()
if graph[current] is not None:
for neighbor in graph[current]:
if not visited[neighbor]:
queue.append(neighbor)
visited[neighbor] = True
count += 1
return count
def solution(n, wires):
min_diff = float('inf')
graph = [[] for _ in range(n + 1)]
for node1, node2 in wires:
graph[node1].append(node2)
graph[node2].append(node1)
for node1, node2 in wires:
graph[node1].remove(node2)
graph[node2].remove(node1)
diff = abs(bfs(node1, graph) - bfs(node2, graph))
min_diff = min(min_diff, diff)
graph[node1].append(node2)
graph[node2].append(node1)
return min_diff
n = 4
wires = [[1,2],[2,3],[3,4]]
>> 0
bfs(start, graph): 해당 함수는 너비 우선 탐색(BFS) 알고리즘을 구현한 함수이다. 시작 노드와 그래프를 입력으로 받아서 BFS를 수행하면서 시작 노드로부터 도달 가능한 노드의 개수를 세는 역할을 한다.solution(n, wires): 이 함수는 전체 송전탑의 수 n과 전선 연결 리스트 wires를 입력으로 받는다. 해당 함수는 다음과 같은 과정을 거쳐 문제를 해결한다. 