문제
me
from collections import deque, defaultdict
def bfs(start, nomore, n, route_):
q = deque([start])
visit = [False] * (n + 1)
visit[start] = True
visit[nomore] = True
length = 1
while q:
front = q.popleft()
for next in route_[front]:
if not visit[next]:
q.append(next)
visit[next]=True
length += 1
return length
def solution(n, wires):
route_ = defaultdict(list)
for a, b in wires:
route_[a].append(b)
route_[b].append(a)
small_gap = 101
for i, [a, b] in enumerate(wires):
small_gap = min(small_gap, abs(bfs(a, b, n, route_) - bfs(b, a, n, route_)))
return small_gap
others
uf = []
def find(a):
global uf
if uf[a] < 0: return a
uf[a] = find(uf[a])
return uf[a]
def merge(a, b):
global uf
pa = find(a)
pb = find(b)
if pa == pb: return
uf[pa] += uf[pb]
uf[pb] = pa
def solution(n, wires):
global uf
answer = int(1e9)
k = len(wires)
for i in range(k):
uf = [-1 for _ in range(n+1)]
tmp = [wires[x] for x in range(k) if x != i]
for a, b in tmp: merge(a, b)
v = [x for x in uf[1:] if x < 0]
answer = min(answer, abs(v[0]-v[1]))
return answer