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

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

Split the SSHS 3

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

요약
가중치가 있는 트리에서 간선 하나를 잘라 두 부분으로 나눌 때, 두 부분의 가중치 합 차이의 절댓값을 최소로 하는 간선을 찾는다.
난이도

보통10점 중 5점

유형
트리, DFS, 누적 합
정답자
아직 제출이 없습니다

문제

서울과학고등학교에는 NN개의 대나무가 N−1N-1개의 나무줄기로 연결되어 있는 독특한 형태의 대나무숲이 있다. 각 나무줄기는 대나무 2개를 연결하며 대나무들은 모두 연결되어 있다. 이때 연결되어 있다는 것은 어떤 두 대나무를 골라도 서로 나무줄기를 통해서 이동할 수 있다는 것을 의미한다. 만약 1번과 2번 대나무가 나무줄기로 연결되어 있으면 1번과 2번은 나무줄기를 통해서 서로 이동할 수 있는 것이다. 또한 임의의 두 대나무 사이를 나무줄기를 통해 이동할 수 있는 단순(최단)경로는 유일하다.

대나무숲에서 서울과학고등학교 친구들은 서로를 돕고 의지하며 행복하게 살고 있었다. 하지만 어느 날, 대나무숲 친구들 사이에 갈등이 생겼다. for문에서 중괄호의 위치에 관한 의견을 달리하며 다투게 된 것이다!

결국 다툼에 지친 서울과학고등학교 친구들은 대나무숲을 나누기로 결정했다. 이 때 어느 한쪽이 지나치게 유리하면 다른 쪽의 반발이 생기기 때문에 최대한 공평하게 나눠야 한다.서울과학고등학교 친구들은 대나무숲을 너무나 사랑하기 때문에 단 하나의 나무줄기만 잘라서 대나무숲을 2개로 나누려고 한다.

i(1≤i≤N)i(1\leq i\leq N)번 대나무는 중요도 W_iW\_i를 가지고 있으며, 대나무숲의 중요도는 대나무숲에 속한 모든 대나무의 중요도의 합으로 정의한다. 이때, 대나무숲을 공평하게 나눈다는 것은 나눠진 두 대나무숲의 중요도의 차가 최소가 되도록 나눈다는 뜻이다.

대나무숲을 공평하게 나눴을 때 중요도의 차와 이때 끊어야 할 나무줄기가 연결하는 대나무들의 번호를 구해서 귀여운 서울과학고등학교 친구들을 도와주자.

입력

첫 번째 줄에 대나무의 수 NN이 주어진다.

이후 N−1N-1줄에 걸쳐 그중 i(1≤i≤N−1)i(1 \leq i \leq N-1)번째 줄에 ii번째 나무줄기가 연결하는 대나무들의 번호가 공백으로 구분되어 주어진다.

이후 NN줄에 걸쳐 그중 i(1≤i≤N)i(1 \leq i \leq N)번째 줄에 ii번 대나무의 중요도 W_iW\_i가 주어진다.

출력

첫 번째 줄에 중요도의 차의 최솟값을 출력한다.

두 번째 줄에는 끊어야 할 나무줄기가 잇는 대나무들의 번호 2개를 공백으로 구분하여 출력한다.

가능한 답이 여러 가지 있다면, 그중 어떤 것을 출력해도 좋다.

제한

  • 2≤N≤100,0002\leq N\leq 100,000
  • −10,000≤W_i≤10,000-10,000 \leq W\_i\leq 10,000
  • 문제에서 주어지는 모든 수는 정수이다.

힌트

  • 차는 다음과 같이 정의된다: xx와 yy의 차는 x−yx-y와 y−xy-x중 작지 않은 수이다.

예제2

  1. 예제 1

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

    입력
    7
    1 6
    4 2
    4 7
    3 7
    2 1
    1 5
    2
    -1
    1
    4
    3
    4
    -1
    
    예상 출력
    4
    2 4