配点 : 500 点
問題文
AtCoder 王国には 1,2,…,N の番号がついた N 種類の魔法石が流通しています。
高橋くんは、魔法石を一列に並べて飾りを作ろうとしています。
魔法石には隣り合わせにできる組とできない組があります。
隣り合わせにできる組は (魔法石 A1, 魔法石 B1),(魔法石 A2, 魔法石 B2),…,(魔法石 AM, 魔法石 BM) の M 組で、それ以外の組は隣り合わせることができません。(これらの組において、石の順序は不問です。)
魔法石 C1,C2,…,CK をそれぞれ 1 個以上含む魔法石の列を作ることができるか判定し、作れる場合はそのような列を作るのに必要な魔法石の個数の最小値を求めてください。
制約
- 入力は全て整数
- 1≤N≤105
- 0≤M≤105
- 1≤Ai<Bi≤N
- i=j ならば (Ai,Bi)=(Aj,Bj)
- 1≤K≤17
- 1≤C1<C2<⋯<CK≤N
入力
入力は以下の形式で標準入力から与えられる。
N M
A1 B1
A2 B2
⋮
AM BM
K
C1 C2 ⋯ CK
出力
魔法石 C1,C2,…,CK を含む魔法石の列を作るのに必要な魔法石の個数の最小値を出力せよ。
作ることができない場合、代わりに -1
を出力せよ。
4 3
1 4
2 4
3 4
3
1 2 3
5
例えば、魔法石を [1,4,2,4,3] と並べると、魔法石 1,2,3 を含む長さ 5 の列を作ることができます。
4 3
1 4
2 4
1 2
3
1 2 3
-1
10 10
3 9
3 8
8 10
2 10
5 8
6 8
5 7
6 7
1 6
2 4
4
1 2 7 9
11
例えば、魔法石を [1,6,7,5,8,3,9,3,8,10,2] と並べると、魔法石 1,2,7,9 を含む長さ 11 の列を作ることができます。