from collections import deque
import traceback
alist: list
visited: list
def bfs(start):
# print(f"start {start}")
global alist, visited
if visited[start] == 1:
return -1
cnt = 0
q = deque()
q.append(start)
while q:
now = q.popleft()
# print(now)
visited[now] = 1
# print(visited)
cnt += 1
for node in alist[now]:
if visited[node] == 0:
q.append(node)
# print("end")
return cnt
def solution(n, wires):
try:
global alist, visited
answer = []
for except_wire in range(len(wires)):
# print(f"except {except_wire+1}th wire")
alist = [[] for _ in range(n+1)]
visited = [0 for _ in range(n+1)]
values = []
for i, wire in enumerate(wires):
if i == except_wire:
continue
start, end = wire
alist[start].append(end)
alist[end].append(start)
for i in range(1,n+1):
result = bfs(i)
if result != -1:
values.append(result)
# print(f"values : {values}")
answer.append(abs(values[0]-values[1]))
# print(f"answer : {answer}")
return min(answer)
except:
traceback.print_exc()
전형적인 카카오 구현 문제 유형이다. (문제 분석이 중요한 유형)
문제 조건은 간단했다. 이제 이렇게 쉬운 문제는 카카오에서 안 내지 않을까..