주차장

시간 제한1초메모리 제한128 MB

요약
뿌리 있는 트리 형태의 주차장에서 P번 방부터 출구까지의 경로를 비우는 데 필요한 최소 이동 횟수를 구하거나 불가능하면 알립니다.
난이도

어려움10점 중 8점

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

문제

지하 주차장은 여러 층에 걸쳐 있는 NN개의 주차 공간으로 이루어져 있다. 각 주차 공간은 11부터 NN까지의 서로 다른 번호로 구분되며, 자동차 한 대만 세울 수 있는 독립된 작은 방이다. 일부 방은 통로로 직접 연결되어 있다.

자동차는 다른 자동차가 세워져 있는 주차 공간을 지나갈 수 없다. 출구는 1번 방이며, 이 방에는 차를 세울 수 없지만 어떤 차든 이 방을 지나갈 수는 있다.

임의의 두 주차 공간 사이에는 유일한 경로가 존재하므로, 방들은 트리를 이룬다. 출구로 이어지는 모든 경로에서 이웃한 두 방은 서로 인접한 층에 있으며, 출구에 더 가까운 방이 항상 더 높은 층에 있다. 즉, 출구(1번 방)를 루트로 하여 트리를 세우면, 각 방의 부모는 항상 그 방보다 한 층 위에 있다.

Ralph는 P번 방에 차를 세웠고 이제 주차장을 나가려고 한다. 그런데 그가 지나가야 하는 방 중 일부에 다른 차들이 세워져 있다. 그는 출구로 가는 길에 있는, 차가 세워진 모든 방을 비워야 한다. 방법은 그 방에 있는 차를 한 층 아래의 방으로 미는 것이다. 한 번의 밀기는 자동차 한 대를 한 층 아래로, 즉 지금 있는 방에서 바로 아래 층에 직접 연결된 방으로 옮기는 것이며, 그 순간 목적지 방은 비어 있어야 한다(차는 다른 차가 있는 방을 지날 수 없다).

Ralph는 출구까지의 경로가 완전히 비워질 때까지 자기 차를 움직이지 않는다. P번 방에서 출구(1번 방)까지의 경로 위에 있는 모든 방을 비우기 위해 필요한 최소 밀기 횟수를 구하는 프로그램을 작성하라.

입력

첫째 줄에 세 정수 NN, PP, KK가 주어진다 (2≤N≤50002 \le N \le 5000, 2≤P≤N2 \le P \le N, 0≤K≤N−20 \le K \le N - 2). KK는 Ralph의 차를 제외하고 주차된 자동차의 수이며, Ralph의 차는 P번 방에 있다.

다음 NN개의 줄은 각 주차 공간을 설명한다. i+1i + 1번째 줄에는 ii번 방과 직접 연결되어 있으면서 그보다 한 층 아래에 있는 방들이 다음 형식으로 주어진다:

T A1 A2 ... AT

여기서 TT는 그러한 방의 개수이고, A1,A2,…,ATA_1, A_2, \ldots, A_T는 그 방들의 번호이다.

마지막 줄에는 KK개의 정수가 주어지며, 이는 Ralph의 방 P번을 제외하고 차가 세워진 방들의 번호이다.

출력

출구까지의 경로를 비우기 위해 필요한 최소 밀기 횟수를 한 줄에 출력한다. 경로를 비우는 것이 불가능하면 대신 ne postoji를 한 줄에 출력한다.

힌트

자기 차는 밀 수 없다.

예제3

  1. 예제 1

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

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

    입력
    8 5 3
    1 3
    1 7
    2 2 4
    2 5 6
    0
    0
    1 8
    0
    2 3 7
    
    예상 출력
    2