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

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

네트워크 해킹

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

요약
가중치 트리에서 간선 하나를 자른 뒤 같은 가중치의 간선으로 두 끝점을 다시 이어, 결과 트리의 지름이 최대가 되도록 만드는 값을 구한다.
난이도

보통10점 중 7점

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

문제

1번부터 N번까지 번호가 붙은 N개의 컴퓨터로 이루어진 컴퓨터 네트워크가 있다. 컴퓨터 사이에는 두 컴퓨터를 직접 연결하는 회선이 N-1개 설치되어 있다. 이 네트워크에서는 모든 컴퓨터 사이에 통신이 가능하다. 즉, 임의의 컴퓨터에서 시작해 직접 연결된 회선을 계속 따라가면 다른 모든 컴퓨터와 연결되어 통신할 수 있다.

각 회선마다 그 회선에 직접 연결된 한쪽 컴퓨터에서 다른 쪽 컴퓨터로 데이터를 보내는 데 걸리는 시간이 고유하게 존재한다. 따라서 데이터가 여러 회선을 거쳐 전송되는 데 걸리는 총 전송시간은 데이터가 지나간 회선들의 전송시간을 각각 더한 값이 된다.

임의의 u번 컴퓨터에서 다른 v번 컴퓨터로 데이터를 전송할 때는, u번 컴퓨터에서 출발해 v번 컴퓨터에 도착하는 경로 중 총 전송시간이 가장 작은 경로로 데이터가 움직인다. 이때의 총 전송시간이 u, v 사이의 데이터 전송시간이 된다.

‘최대 전송시간’은 네트워크 안의 임의의 두 컴퓨터 사이의 데이터 전송시간 중 가장 큰 값으로 정의된다. 이 ‘최대 전송시간’의 값으로 컴퓨터 네트워크의 가치가 결정된다. 즉, ‘최대 전송시간’이 작을수록 가치가 높은 네트워크인 것이다.

세계 최고의 해커를 꿈꾸는 성원이는 해킹 실력을 기르려면 우선 물리적 해킹부터 연습해봐야겠다고 생각했다. 마침 평소에 이 네트워크에 대해 불만이 많았으므로, 이 네트워크를 타겟으로 삼아 물리적 해킹을 해보기로 했다. 구체적으로 다음과 같은 과정을 통해 이 네트워크를 공격하려고 한다.

  1. 네트워크에 존재하는 회선 중 하나를 골라 그 회선을 끊는다.
  2. 서로 다른 두 컴퓨터를 고른 후, 아까 끊은 그 회선과 동일한 전송시간을 갖는 회선을 그 사이에 설치한다.
  3. 사람들이 네트워크가 공격당했다는 것을 눈치채면 안 되기 때문에, 회선을 끊고 다시 설치한 후에도 모든 컴퓨터 사이에 통신이 가능해야 한다.

성원이는 위 과정을 딱 한 번만 수행해 이 네트워크의 가치를 최대한 떨어뜨리려고 한다. 즉, 해킹을 마친 상태에서 계산한 ‘최대 전송시간’이 가장 커지는 선택을 단 한 번만 할 것이다.

네트워크 안의 컴퓨터 수가 매우 많으므로 프로그램을 만들어 계산해야 하는데 성원이는 프로그래밍을 할 줄 모른다. 4차산업혁명 시대에 프로그래밍도 모르는 불쌍한 성원이를 도와주자.

입력

첫 번째 줄에 네트워크 상의 컴퓨터 수 N(2 ≤ N ≤ 200,000)이 주어진다.

두 번째 줄부터 N-1줄에 걸쳐 네트워크의 회선 정보가 주어진다. 각 줄마다 세 개의 자연수 a, b, t (1 ≤ a, b ≤ N, a ≠ b, 1 ≤ t ≤ 107)가 주어지는데, 이는 a번 컴퓨터와 b번 컴퓨터 사이를 직접 연결하는 회선이 존재하며, 그 회선의 전송시간이 t초라는 뜻이다.

출력

첫 번째 줄에 최선의 해킹을 했을 때 가능한 ‘최대 전송시간’의 최댓값을 출력한다.

예제3

  1. 예제 1

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

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

    입력
    6
    1 2 3
    1 3 1
    1 4 5
    1 5 6
    1 6 2
    
    예상 출력
    14