importsysfromcollectionsimportdequeN=int(sys.stdin.readline().rstrip())tree=[[]for_inrange(N+1)]for_inrange(N-1):S,E=map(int,sys.stdin.readline().split())tree[S].append(E)tree[E].append(S)q=deque([1])visited=[True,True]+[Falsefor_inrange(N)]result=[[]for_inrange(N+1)]whilelen(q):parent=q.popleft()forchildintree[parent]:ifnotvisited[child]:visited[child]=Trueresult[child].append(parent)q.append(child)forjinrange(2,len(result)):print(result[j][0])# heap을 사용하는 건가 고민했으나, 아니었고,# 1이 root node인 것을 알고 있으니.# 각각의 node에 연결되어있는 모든 node들을 기록했다가.# 1부터 BFS로 한 단계씩 내려가면, 코딩상 pop한 것이 # 부모 node가 된다.# 채점 속도가 느려서 런타임 오류 걸릴까봐 조마조마했다.
importsysfromcollectionsimportdequedefBFS(value,step):q=deque()q.append(value)visited=[-1for_inrange(N+1)]visited[value]=0whileq:x=q.popleft()forc,wintree[x]:ifvisited[c]==-1:visited[c]=visited[x]+wq.append(c)ifstep==1:returnvisited.index(max(visited))else:returnmax(visited)N=int(sys.stdin.readline().rstrip())tree=[[]for_inrange(N+1)]foriinrange(N-1):P,C,V=map(int,input().split())tree[P].append([C,V])tree[C].append([P,V])print(BFS(BFS(1,1),2))# DFS로 지저분하게 구현했으나 말 그대로# 너무 지저분해서 검색의 도움을 받음.# root인 1에서 가장 멀리 있는 노드를 고르고# 그 노드에서 가장 멀리 있는 노드를 고르는 # 알고리즘으로 구현.