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

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

테마파크

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

요약
1번 구역을 뿌리로 하는 트리에서 모든 유료 구역에 무료로 도달하도록 길에 행사를 열어 최소 비용을 구한다.
난이도

보통10점 중 7점

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

문제

민찬이는 테마파크를 개장했다. 이 테마파크는 각기 다른 테마들로 구성된 NN개의 구역과 서로 다른 두 구역을 양방향으로 잇는 N−1N-1개의 길로 이루어져 있다. ii번 길은 A_iA\_i번 구역과 B_iB\_i번 구역을 양방향으로 이으며, 임의의 구역에서 다른 구역으로 가는 경로가 항상 존재한다.

이 테마파크의 구역 NN개 중 MM개는 유료로 운영된다. 유료로 운영되는 구역을 거쳐 가거나 그 구역에 입장하려면 티켓 하나를 사용해야 하며, 한번 사용한 티켓을 다시 사용할 수는 없다. 단, 11번 구역은 항상 무료로 운영된다.

민찬이는 개장을 기념해서 KSA 학생을 한 구역당 한 명씩 총 NN명 초대할 계획이다. 이때, ii번 구역에 초대된 학생은 입구가 있는 11번 구역부터 ii번 구역까지 길을 가장 적게 지나는 경로를 따라 걸어갈 것이다.

또, KSA 학생들이 돈을 내야 하는 상황을 막기 위해 민찬이는 11개 이상의 길 중간에 무료 티켓 행사를 열어 그 길을 지나는 학생들에게 티켓을 하나씩 무료로 나눠주려고 한다. 이때, ii번 길에 행사를 열기 위해서는 비용이 C_iC\_i만큼 들고, 통행을 원활하게 하기 위해 하나의 길에는 최대 하나의 행사만 열어야 한다. KSA 학생이 모두 자신이 초대된 구역까지 무료로 갈 수 있도록 행사를 여는 최소 비용과 그 방법을 구해보자.

입력

첫 번째 줄에 두 정수 NN, MM이 공백으로 구분되어 주어진다.

두 번째 줄에 유료로 운영되는 구역의 번호를 나타내는 MM개의 정수 X_1,X_2,⋯ ,X_MX\_1, X\_2, \cdots, X\_M이 공백으로 구분되어 주어진다.

i+2i+2번째 줄에 세 정수 A_iA\_i, B_iB\_i, C_iC\_i가 공백으로 구분되어 주어진다. (1≤i≤N−1)(1 \le i \le N-1)

출력

첫 번째 줄에 모든 KSA 학생들이 자신이 초대된 구역까지 무료로 갈 수 있도록 행사를 여는 최소 비용을 출력한다.

두 번째 줄에 행사를 열 길의 개수 KK를 출력한다. (1≤K≤N−1)(1 \leq K \leq N-1)

세 번째 줄에 행사를 열 길의 번호를 나타내는 정수 Y_1,Y_2,⋯ ,Y_KY\_1, Y\_2, \cdots, Y\_K를 공백으로 구분하여 출력한다. (1≤Y_i≤N−1)(1 \leq Y\_i \leq N-1)

정답이 여러 개 존재한다면 그중 아무거나 출력해도 상관없다.

제한

  • 1≤M<N≤2×1051 \leq M < N \leq 2 \times 10^5
  • 2≤X_1<X_2<⋯<X_M≤N2 \leq X\_1 < X\_2 < \cdots < X\_M \leq N
  • 1≤A_i<B_i≤N1 \leq A\_i < B\_i \leq N (1≤i≤N−1)(1 \leq i \leq N-1)
  • 0≤C_i≤1090 \leq C\_i \leq 10^9 (1≤i≤N−1)(1 \leq i \le N-1)
  • 1≤i<j≤N1 \leq i < j \leq N인 모든 ii, jj에 대해서 ii번 구역과 jj번 구역을 연결하는 경로가 존재

예제2

  1. 예제 1

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

    입력
    5 3
    2 4 5
    1 2 10
    2 3 1
    3 4 2
    4 5 7
    
    예상 출력
    13
    3
    1 2 3