항공편 계획
시간 제한1초메모리 제한512 MB
각 공항이 목적지 목록 또는 목적지가 아닌 공항 목록을 제시할 때, s에서 t까지 필요한 최소 항공편 수를 구한다.
문제
아마 알고 있겠지만, 항공권 가격은 때때로 놀랄 만큼 복잡하다. 예를 들어 두 공항 사이를 직항으로 가는 것보다 여러 구간을 거치는 훨씬 긴 항공편이 더 저렴한 경우가 자주 있다. 가격이 복잡해 보이는 이유 중 하나는 항공사가 가격이 정해지는 방식을 일부러 불분명하게 만들어 고객이 더 비싼 항공편을 선택하도록 유도하기 때문이다.
한 항공사는 이런 불투명함을 한 단계 더 밀어붙이기로 했다. 항공편 자동 검색 기능조차 제공하지 않는다. 대신 항공편을 아주 독특한 형식으로 설명한다. 개의 공항(번호는 부터 까지) 각각에 대해 다음 중 하나를 나열한다.
- 이 공항에서 출발해 갈 수 있는 공항, 또는
- 이 공항에서 출발해 갈 수 없는 공항.
이런 복잡함을 보상하듯, 항공사는 두 공항 사이를 잇는 모든 직항 항공편의 가격을 같은 금액으로 정한다.
항공사가 제공하는 모든 항공편의 설명이 주어졌을 때, 공항 에서 공항 까지 가는 데 필요한 최소 항공편 수를 구하는 프로그램을 작성하라.
입력
첫째 줄에는 공항의 수 ()과 두 정수 , 가 주어진다 (, ).
다음 개 줄은 공항 부터 시작하여 각 공항의 출발 항공편을 설명한다. 줄은 문자 하나로 시작한다. 이 문자가 N이면 이 공항에서 갈 수 있는 모든 도착 공항의 목록이 주어진다. 이 문자가 C이면 이 공항에서 갈 수 없는 모든 공항의 목록이 주어진다.
문자 뒤에는 목록에 있는 공항의 수 이 정수로 주어진다. 마지막으로 줄에 개의 서로 다른 수 ()가 주어지며, 이는 목록에 있는 공항이다.
모든 공항에 대한 의 합은 이하이다.
출력
공항 에서 공항 까지 가는 데 필요한 최소 항공편 수를 정수 하나로 출력한다.
경로가 없으면 "impossible"을 출력한다.