철과 석탄이 있는 칸이 정해진 방향 그래프에서 1번 칸에서 시작해 철 칸 하나와 석탄 칸 하나를 차지하는 데 필요한 최소 정착민 수를 구한다.
보통7그래프BFS최단 경로아직 제출이 없습니다시간 제한2초메모리 제한512 MB전략 보드게임 강철시대에서 당신이 즐겨 쓰는 전술은 병사를 최대한 많이 뽑아 상대를 밀어붙이는 것이다. 병사를 만들려면 철광석과 석탄이라는 두 자원이 모두 필요하다.
게임판은 1번부터 n번까지 번호가 붙은 칸으로 이루어지고, 칸에는 자원이 놓여 있을 수 있다. 칸 사이의 이동은 한쪽 방향으로만 열려 있기도 하다. 칸 A에서 칸 B로 갈 수 있다고 해서 B에서 A로 갈 수 있는 것은 아니다. 예를 들어 두 칸이 강으로 이어져 있으면 증기기관을 발명하기 전까지는 하류로만 내려갈 수 있다. 그래도 도로를 타고 다른 칸을 빙 돌아가면 상류 칸에 닿기도 한다.
게임을 시작할 때 소유한 칸은 하나뿐이고 개척자는 모두 그 칸에 모여 있다. 한 번의 이동에서 개척자를 원하는 수만큼 한 칸에서 그 칸과 이어진 칸으로 옮길 수 있다. 개척자가 어떤 칸에 처음 들어가면 그 칸을 점령한다. 점령한 칸마다 개척자 한 명이 묶여서 게임이 끝날 때까지 그 칸에 남아야 한다. 처음부터 소유한 칸에는 궁전이 있어서 개척자를 남기지 않아도 점령 상태로 계속 남는다.
철광석이 있는 칸과 석탄이 있는 칸을 각각 하나 이상 점령하는 것이 목표다. 목표를 이루는 데 필요한 개척자의 최소 인원을 구하라.
첫째 줄에 칸의 개수 n, 철광석이 있는 칸의 개수 m, 석탄이 있는 칸의 개수 k가 주어진다. (2≤n≤105, 1≤m<n, 1≤k<n)
둘째 줄에 철광석이 있는 칸의 번호 o1,…,om이 주어진다. 번호는 서로 다르다. (1≤oi≤n)
셋째 줄에 석탄이 있는 칸의 번호 c1,…,ck가 주어진다. 번호는 서로 다르다. (1≤ci≤n)
다음 n개의 줄에는 게임판의 연결 관계가 주어진다. 그중 j번째 줄에는 j번 칸에서 갈 수 있는 칸의 개수 a가 먼저 주어지고 (0≤a≤10), 이어서 그 칸들의 번호 b1,…,ba가 주어진다. 번호는 서로 다르고 bi=j이다. (1≤bi≤n)
철광석과 석탄이 한 칸에 함께 있는 경우는 없다. 게임을 시작할 때 소유한 칸은 1번 칸이다.
철광석이 있는 칸과 석탄이 있는 칸을 각각 하나 이상 점령하는 데 필요한 개척자의 최소 인원을 출력한다. 두 자원을 모두 점령할 수 없으면 impossible을 출력한다.