여러 정리가 다른 정리에 의존하고 각 정리마다 비용이 다른 여러 증명이 있을 때, 정리 0을 증명하는 최소 총비용을 구한다.
보통7동적 계획법그래프비트 연산DFS아직 제출이 없습니다시간 제한2초메모리 제한512 MB다비드는 증명 완성 협회 회보에 실을 논문을 쓰고 있다. 논문에서 여러 정리를 증명하는데, 정리마다 증명을 하나씩 준비했고 욕심이 많아서 어떤 정리에는 증명을 여러 개 준비했다. 한 정리의 증명은 다른 정리 몇 개를 근거로 삼는다.
논문을 실으려면 길이를 최대한 줄여야 한다. 다비드가 정말로 보이고 싶은 것은 주 정리인 정리 0 하나뿐이다. 증명마다 필요한 단어 수는 이미 어림잡아 두었다. 논문의 가장 짧은 길이를 구하라.
정리 0을 증명하려면 그 정리의 증명 중 하나를 골라 논문에 싣고, 그 증명이 근거로 삼는 정리를 모두 같은 논문 안에서 증명해야 한다. 근거로 삼는 정리도 같은 방식으로 증명 하나를 골라 싣는다. 같은 정리를 두 번 싣지는 않으므로, 여러 증명이 같은 정리를 근거로 삼아도 그 정리의 길이는 한 번만 센다. 논문의 길이는 실은 증명의 길이를 모두 더한 값이다. 순환 논법은 허용하지 않는다. 즉 어떤 정리도 직접이든 간접이든 자기 자신을 근거로 삼아 증명할 수 없다.
첫 줄에 정리의 개수 n (1≤n≤20)이 주어진다.
이어서 각 정리 i (0≤i≤n−1)에 대해 다음이 번호 순서대로 주어진다.
정리 0을 증명하는 방법은 적어도 하나 있다.
다비드의 논문이 가질 수 있는 가장 짧은 길이를 정수 하나로 한 줄에 출력한다.