만드는 중입니다

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

알고리즘 스터디 멤버십

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

요약
멘토 트리 구조에서 각 구성원이 두 가지 알고리즘 유형을 배우도록 선택해, 모든 팀(한 노드와 그 자식들)이 구성원마다 서로 다른 유형을 하나씩 맡을 수 있게 하면서 총 교육 비용을 최소화한다.
난이도

보통10점 중 7점

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

문제

알고리즘 스터디는 알고리즘 문제 풀이를 함께 공부하는 모임이다. 이 모임에는 N명이 소속되어 있고, 가입한 순서대로 0번부터 N-1번까지 번호가 매겨져 있다.

0번 회원은 멘토가 없는 유일한 회원이다. 나머지 회원은 모두 멘토를 정확히 한 명 갖는다. i번 회원의 멘토는 SiS_i번 회원이고, 0번 회원은 멘토가 없으므로 S0=−1S_0 = -1이다. 멘토는 자신보다 먼저 모임에 들어온 사람이어야 하므로, 1≤i≤N−11 \le i \le N-1인 모든 i에 대해 0≤Si≤i−10 \le S_i \le i-1이다.

모임의 운영자는 회원 전원에게 알고리즘을 가르치기로 했다. 스터디는 문제 풀이에 쓰이는 알고리즘을 M개의 유형으로 나누고 1번부터 M번까지 번호를 매겨 두었다. i번 유형을 한 사람에게 가르치는 데 드는 비용은 TiT_i원이다. 회원은 각자 수업을 두 번 들어야 하며, 같은 유형의 수업을 두 번 들을 수는 없다. 교육이 끝나면 회원은 자신이 배운 두 유형에 속하는 문제는 모두 풀 수 있고, 그 두 유형에 속하지 않는 문제는 전혀 풀 수 없다.

회원은 각자 자신이 리더인 팀을 하나씩 만들어야 한다. 따라서 팀은 모두 N개 생긴다. i번 회원이 리더인 팀은 i번 회원과 멘토가 i번인 회원으로 이루어진다. 즉 Sj=iS_j = i인 모든 j가 이 팀에 속한다. Sk=jS_k = j이고 Sj=iS_j = i이면, k는 i번 회원이 리더인 팀에 속하지 않는다.

어떤 팀이 프로그래밍 대회에 참가할 자격을 갖추려면 아래 조건을 만족해야 한다.

  • 팀원 전원이 문제를 풀 수 있어야 한다.
  • 팀원이 각자 풀 알고리즘 유형을 하나씩 정할 때, 서로 겹치지 않는 상태가 가능해야 한다.

자격 검사는 팀마다 따로 한다. 즉 한 사람이 서로 다른 팀에서 서로 다른 유형을 정해도 된다. 참가 자격을 갖춘 팀을 좋은 팀이라고 한다.

모든 팀이 좋은 팀이 되도록 각 회원에게 가르칠 두 유형을 정할 때, 필요한 비용의 최솟값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N과 M이 주어진다. (1≤N≤301 \le N \le 30, 2≤M≤302 \le M \le 30)

둘째 줄에 S0S_0부터 SN−1S_{N-1}까지 N개의 정수가 순서대로 주어진다. (S0=−1S_0 = -1, 1≤i≤N−11 \le i \le N-1인 i에 대해 0≤Si≤i−10 \le S_i \le i-1)

셋째 줄에 T1T_1부터 TMT_M까지 M개의 정수가 순서대로 주어진다. (1≤Ti≤1001 \le T_i \le 100)

출력

모든 팀이 좋은 팀이 되도록 교육하는 데 필요한 비용의 최솟값을 첫째 줄에 출력한다.

모든 팀을 좋은 팀으로 만들 수 없으면 -1을 출력한다.

힌트

팀원이 k명인 팀에서는 k명이 서로 다른 유형을 정해야 한다. 그러므로 그 팀원이 배운 유형을 모두 모으면 서로 다른 유형이 k개 이상이어야 하고, 나아가 팀원마다 유형을 하나씩 겹치지 않게 나누어 가질 수 있어야 한다.

회원이 한 명뿐인 팀은 항상 좋은 팀이다. 모임에 회원이 한 명뿐이면 가장 싼 두 유형을 가르치는 것이 비용이 가장 적다.

예제4

  1. 예제 1

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

    입력
    3 3
    -1 0 0
    1 2 3
    
    예상 출력
    10
    
  3. 예제 3

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

    입력
    29 15
    -1 0 0 2 2 2 1 1 6 0 5 4 11 10 3 6 11 7 0 2 13 14 2 10 9 11 22 10 3
    4 2 6 6 8 3 3 1 1 5 8 6 8 2 4
    
    예상 출력
    71