의존 관계가 있는 지점들에서 못을 박고 빼는 계획을 시뮬레이션하면서 동시에 꽂힌 못의 최대 개수와 젖은 규칙을 처음 어기는 단계를 찾는다.
보통4시뮬레이션그래프구현배열면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB피오나는 뛰어난 등반가다. 못을 여러 개 들고 다니면서 암벽의 중요 지점에 박아 두고, 경험이 적은 등반가가 그 못을 발판으로 쓴다. 피오나는 암벽 어디든 오를 수 있지만 못을 박으려면 균형을 잡아야 한다. 그래서 어떤 지점에 못을 박으려면 그 지점이 의존하는 지점에 모두 못이 박혀 있어야 한다. 박아 둔 못은 언제든 빼서 다시 쓸 수 있다.
계획은 단계의 나열이고, 각 단계는 중요 지점 하나를 가리킨다. 그 지점에 못이 없으면 못을 박고, 이미 못이 있으면 그 못을 뺀다. 계획이 필요로 하는 못의 개수는 계획을 실행하는 동안 암벽에 동시에 박혀 있는 못의 최대 개수다.
피오나의 계획은 마른 바위를 전제로 한다. 마른 바위에서는 못을 아무 때나 빼도 된다. 어제 비가 와서 바위가 젖었고, 젖은 바위에서는 못을 박을 때와 같은 발판이 없으면 못을 빼기가 위험하다. 이 젖은 바위 규칙에서는 지점 i의 못을 뺄 때도 i가 의존하는 지점에 모두 못이 남아 있어야 한다. 못을 박는 조건은 그대로다.
중요 지점이 5개인 암벽을 보자. 지점 1은 바닥에 가까워서 아무 지점에도 의존하지 않는다. 지점 2와 지점 3은 지점 1에 의존하고, 지점 4는 지점 2와 지점 3에, 지점 5는 지점 4에 의존한다. 계획 1, 2, 3, 1, 4, 2, 3, 5는 마른 바위에서 안전하고 못 3개를 쓴다. 하지만 젖은 바위에서는 6번째 단계가 지점 1에 못이 없는 상태로 지점 2의 못을 뺀다. 이 단계가 젖은 바위 규칙을 처음 어기는 단계다.
암벽과 피오나의 마른 바위 계획이 주어진다. 계획이 못을 몇 개 필요로 하는지, 그리고 젖은 바위 규칙을 처음 어기는 단계가 몇 번째인지 구하라.
첫 줄에 암벽의 중요 지점 개수 n (1≤n≤1000)이 주어진다.
다음 n개의 줄은 지점을 하나씩 설명한다. i번째 줄에는 정수 p (0≤p<n)와 서로 다른 정수 x1,…,xp (1≤xj<i)가 주어진다. 지점 i는 이 지점들에 의존한다. 즉 지점 i에 못을 박거나 뺄 때 이 지점에 모두 못이 있어야 한다.
다음 줄에 마른 바위 계획의 단계 수 t (1≤t≤1000)가 주어진다. 다음 t개의 줄에는 각 단계가 가리키는 지점 번호 i (1≤i≤n)가 한 줄에 하나씩 주어진다.
이 계획은 마른 바위에서 안전하다. 즉 어떤 단계가 지점 i에 못을 박을 때, i가 의존하는 지점에는 이미 모두 못이 있다. 또 모든 중요 지점은 계획의 어느 단계에서 못이 박힌다.
정수 두 개를 공백 하나로 구분해 출력한다. 첫 번째 정수는 마른 바위 계획이 필요로 하는 못의 개수다. 두 번째 정수는 젖은 바위 규칙을 처음 어기는 단계의 번호이고, 단계는 1번부터 센다. 모든 단계가 젖은 바위 규칙을 지키면 0을 출력한다.