이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
from collections import defaultdict
import sys
n = int(input())
mp = [[] for _ in range(n)]
for _ in range(n - 1):
a, b = map(int, input().split())
mp[a-1].append(b-1)
mp[b-1].append(a-1)
a = list(map(int,input().split()))
for i in range(n):
a[i] = True if a[i] == 1 else False
can = False
for i in range(n):
q = []
q.append([i, a])
level = 0
while q:
l = len(q)
for _ in range(l):
top = q.pop(0)
if not any(top[1]):
can = True
print(level)
sys.exit()
cp = top[1][:]
cp[top[0]] = not cp[top[0]]
for nxt in mp[top[0]]:
cp[nxt] = not cp[nxt]
for j in range(n):
if j != top[0]:
q.append([j, cp])
level += 1
if level >= 20:
break
if not can:
print("IMPOSSIBLE")
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |