이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
import sys
sys.setrecursionlimit(200000)
def depth_first(h, p, t, ls, memo):
memo[h] = t - len(ls[h])
memo[h] += 0 if p == 0 else 1
for elem in ls[h]:
if elem == p:
continue
depth_first(elem, h, t, ls, memo)
if memo[elem] < 0:
memo[h] += memo[elem]
def main():
n = int(input())
ls = [[] for i in range(n + 2)]
memo = [0 for i in range(n + 2)]
for _ in range(n - 1):
f, s = map(int, input().split())
ls[f].append(s)
ls[s].append(f)
s = 0
e = n
while s < e:
m = (s + e)//2
t = m
depth_first(1, 0, t, ls, memo)
if memo[1] < 0:
s = m + 1
else:
e = m
print(s)
if __name__ == "__main__":
main()
# | 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... |
# | 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... |