URAL 1056 Computer Net
INF = 0x3f3f3f3f
N = 0
g = [[]]
dp = []
ans = []
res = 0
def input():
global N, g
N = int(raw_input())
g = [[] for i in range(N + 1)]
for i in range(2, N + 1):
x = int(raw_input())
g[x].append(i), g[i].append(x)
def bottom_up(x, px):
global dp, g
dp[x] = 0
for y in g[x]:
if y == px: continue
bottom_up(y, x)
dp[x] = max(dp[x], dp[y] + 1)
def top_down(x, px, dis):
global dp, res, ans, g
t = max(dp[x], dis)
if t < res:
res = t
ans = [x]
elif t == res: ans.append(x)
opt = [dp[i] + 1 for i in g[x]]
for i in range(len(opt) - 2, -1, -1):
opt[i] = max(opt[i], opt[i + 1])
i = 0
t = dis
for y in g[x]:
i += 1
if y == px: continue
ndis = t
if i < len(opt) and opt[i] > ndis: ndis = opt[i]
top_down(y, x, ndis + 1)
t = max(t, dp[y] + 1)
def process():
global N, dp, res, ans
dp = [-1 for i in range(N + 1)]
bottom_up(1, -1)
res = 0x3f3f3f3f
top_down(1, -1, 0)
ans.sort()
for i in ans: print i,
print
#main
input()
process()
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.