시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
지하 주차장은 여러 층에 걸쳐 있는 N개의 주차 공간으로 이루어져 있다. 각 주차 공간은 1부터 N까지의 서로 다른 번호로 구분되며, 자동차 한 대만 세울 수 있는 독립된 작은 방이다. 일부 방은 통로로 직접 연결되어 있다.
자동차는 다른 자동차가 세워져 있는 주차 공간을 지나갈 수 없다. 출구는 1번 방이며, 이 방에는 차를 세울 수 없지만 어떤 차든 이 방을 지나갈 수는 있다.
임의의 두 주차 공간 사이에는 유일한 경로가 존재하므로, 방들은 트리를 이룬다. 출구로 이어지는 모든 경로에서 이웃한 두 방은 서로 인접한 층에 있으며, 출구에 더 가까운 방이 항상 더 높은 층에 있다. 즉, 출구(1번 방)를 루트로 하여 트리를 세우면, 각 방의 부모는 항상 그 방보다 한 층 위에 있다.
Ralph는 P번 방에 차를 세웠고 이제 주차장을 나가려고 한다. 그런데 그가 지나가야 하는 방 중 일부에 다른 차들이 세워져 있다. 그는 출구로 가는 길에 있는, 차가 세워진 모든 방을 비워야 한다. 방법은 그 방에 있는 차를 한 층 아래의 방으로 미는 것이다. 한 번의 밀기는 자동차 한 대를 한 층 아래로, 즉 지금 있는 방에서 바로 아래 층에 직접 연결된 방으로 옮기는 것이며, 그 순간 목적지 방은 비어 있어야 한다(차는 다른 차가 있는 방을 지날 수 없다).
Ralph는 출구까지의 경로가 완전히 비워질 때까지 자기 차를 움직이지 않는다. P번 방에서 출구(1번 방)까지의 경로 위에 있는 모든 방을 비우기 위해 필요한 최소 밀기 횟수를 구하는 프로그램을 작성하라.
첫째 줄에 세 정수 N, P, K가 주어진다 (2≤N≤5000, 2≤P≤N, 0≤K≤N−2). K는 Ralph의 차를 제외하고 주차된 자동차의 수이며, Ralph의 차는 P번 방에 있다.
다음 N개의 줄은 각 주차 공간을 설명한다. i+1번째 줄에는 i번 방과 직접 연결되어 있으면서 그보다 한 층 아래에 있는 방들이 다음 형식으로 주어진다:
T A1 A2 ... AT여기서 T는 그러한 방의 개수이고, A1,A2,…,AT는 그 방들의 번호이다.
마지막 줄에는 K개의 정수가 주어지며, 이는 Ralph의 방 P번을 제외하고 차가 세워진 방들의 번호이다.
출구까지의 경로를 비우기 위해 필요한 최소 밀기 횟수를 한 줄에 출력한다. 경로를 비우는 것이 불가능하면 대신 ne postoji를 한 줄에 출력한다.
자기 차는 밀 수 없다.
T A1 A2 ... AT