아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

내 왼손에는 흑염룡이 잠들어 있다

시간 제한2초메모리 제한512 MB

요약
가중치가 있는 트리에서 각 정점마다 가장 먼 다른 정점까지의 거리를 구한다.
난이도

보통10점 중 6점

유형
트리, DFS, 동적 계획법
정답자
아직 제출이 없습니다

문제

철수는 왼손을 언제나 붕대로 감고 다닌다. 붕대를 풀면 흑염룡이 날뛰기 때문이다.

어느 날 철수가 사는 나라에 태풍이 몰아쳤다. 태풍 탓에 걷잡을 수 없이 날뛰는 흑염룡을 잠재우려고 철수는 긴 여행을 떠나기로 했다. 흑염룡을 잠재우려면 태풍에서 최대한 멀어져야 하므로, 지금 사는 나라에서 가장 먼 나라까지 가야 한다.

철수가 사는 세계는 NN개의 나라로 이루어져 있고, 나라를 잇는 도로가 N−1N-1개 있다. 각 도로는 두 나라를 양방향으로 잇고, 어느 나라에서 출발하든 나머지 모든 나라로 가는 경로가 있다. 두 나라 사이의 거리는 그 경로에 놓인 도로 길이의 합이다.

철수가 ii번 나라에 산다고 할 때 여행의 목적지가 되는 나라까지의 거리를 D[i]D[i]라고 하자. 즉 D[i]D[i]는 ii번 나라에서 다른 나라까지 가는 거리 중 가장 큰 값이다. 1≤i≤N1 \le i \le N인 모든 ii에 대해 D[i]D[i]를 구하자.

입력

첫째 줄에 나라의 수 NN (2≤N≤500002 \le N \le 50000)이 주어진다.

둘째 줄부터 N−1N-1개의 줄에 도로 정보가 한 줄에 하나씩 주어진다. 각 줄은 세 정수 from, to, length로 이루어지고, from번 나라와 to번 나라를 잇는 길이 length인 도로가 있다는 뜻이다. from과 to는 11 이상 NN 이하이고 서로 다르며, length는 11 이상 4000040000 이하의 정수이다.

출력

NN개의 줄을 출력한다. ii번째 줄에는 D[i]D[i]의 값을 출력한다.

예제5

  1. 예제 1

    입력
    5
    2 1 3
    2 4 10
    2 3 4
    3 5 9
    
    예상 출력
    16
    13
    14
    23
    23
    
  2. 예제 2

    입력
    2
    1 2 1
    
    예상 출력
    1
    1
    
  3. 예제 3

    입력
    5
    1 2 1
    2 3 1
    3 4 1
    4 5 1
    
    예상 출력
    4
    3
    2
    3
    4
    
  4. 예제 4

    입력
    6
    1 2 5
    1 3 7
    1 4 1
    1 5 40000
    1 6 3
    
    예상 출력
    40000
    40005
    40007
    40001
    40007
    40003
    
  5. 예제 5

    입력
    9
    1 2 100
    2 3 100
    3 4 100
    4 5 100
    5 6 100
    3 7 1
    7 8 1
    8 9 1
    
    예상 출력
    500
    400
    300
    300
    400
    500
    301
    302
    303