만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

무역 경로

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

요약
각 도시가 지나는 무역 경로 수가 제한을 넘지 않도록 로마로 가는 경로를 골라, 가치 합의 최댓값을 구합니다.
난이도

보통10점 중 7점

유형
그리디, 트리, 세그먼트 트리
정답자
아직 제출이 없습니다

문제

모든 길은 로마로 통한다. 여기서 로마 제국 도로망의 모든 도로는 한 방향으로만 지날 수 있다. 로마가 아닌 각 도시에서는 나가는 도로가 정확히 하나 있으며, 이 도로들을 따라가면 항상 로마에 도달한다.

로마를 포함한 각 도시는 로마로 가는 무역 경로를 만들어 로마에 가치를 가져다줄 수 있다. 이 가치들은 모두 서로 다르다. 각 도시는 상인들로 너무 붐비는 것을 원하지 않아서, 자신이 포함될 수 있는 무역 경로의 개수를 제한한다.

도시가 무역 경로에 포함된다는 것은, 그 경로를 만든 도시에서 로마까지 가는 유일한 경로 위에 그 도시가 있다는 뜻이다. 도시는 자기 자신이 만든 무역 경로에도 포함된다.

도시별 제한이 주어졌을 때, 무역 경로를 만들 도시들의 부분집합을 골라 로마가 얻을 수 있는 가치의 최댓값을 구하라.

입력

첫 줄에 도시의 개수 NN (2≤N≤3000002 \leq N \leq 300000)이 주어진다. 도시는 1번부터 NN번까지 번호가 붙어 있으며, 로마는 1번 도시다.

둘째 줄에는 N−1N-1개의 정수 p2,p3,…,pNp_2, p_3, \ldots, p_N (1≤pi<i1 \leq p_i < i)이 주어진다. pip_i는 도시 ii에서 나가는 유일한 도로를 따라갔을 때 도착하는 도시다.

셋째 줄에는 NN개의 정수 b1,b2,…,bNb_1, b_2, \ldots, b_N (0≤bi≤N0 \leq b_i \leq N)이 주어진다. bib_i는 도시 ii가 포함될 수 있는 무역 경로의 최대 개수다.

넷째 줄에는 서로 다른 NN개의 정수 v1,v2,…,vNv_1, v_2, \ldots, v_N (0≤vi≤1090 \leq v_i \leq 10^9)이 주어진다. viv_i는 도시 ii가 무역 경로를 만들었을 때 로마에 가져다주는 가치다.

출력

로마가 유효한 무역 경로들의 부분집합으로부터 받을 수 있는 가치의 최댓값을 첫 줄에 출력한다. 다음 줄에는 만든 무역 경로의 수 TT를 출력하고, 이어서 선택된 TT개의 도시를 오름차순으로 출력한다. 답이 여러 가지라면 그중 아무거나 출력해도 된다.

예제2

  1. 예제 1

    입력
    7
    1 1 2 2 3 3
    2 1 2 1 1 1 1
    6 5 3 8 4 7 1
    
    예상 출력
    15
    2 4 6
    
  2. 예제 2

    입력
    9
    1 1 2 3 3 4 4 4
    4 4 2 4 1 0 1 1 1
    100 30 10 0 50 200 12 15 13
    
    예상 출력
    195
    4 1 2 5 8