1294: 도시 건설 계획

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:1 Solved:1

Description

N개의 도시가 있습니다. 각 도시는 0부터 N-1까지의 번호가 매겨져 있습니다. 도시들 사이에는 도로를 건설할 수 있으며, 각 도로는 특정 건설 비용을 가지고 있습니다. 당신의 목표는 모든 도시를 연결하면서 최소한의 비용으로 도로를 건설하는 것입니다. 단, 도시에 따라 특별한 조건을 만족해야 할 수도 있습니다.

몇몇 도시들은 "핵심 도시"로 지정될 수 있습니다. 핵심 도시들은 모두 연결되어야 하며, 핵심 도시들 간의 경로는 핵심 도시만을 통과해야 합니다. (핵심 도시가 아닌 도시를 경유하여 연결될 수 없습니다.) 또한, 핵심 도시가 아닌 도시들은 최소한 하나의 핵심 도시와 연결되어야 합니다.

주어지는 도로는 양방향이며, 도로의 개수는 매우 많을 수 있습니다. N은 최대 18입니다.

Input

첫째 줄에 도시의 개수 N (1  N  18)이 주어집니다. 둘째 줄부터 N개의 줄에 걸쳐 N개의 정수가 주어집니다.adj[i][j]는 도시 i와 도시 j를 연결하는 도로의 건설 비용을 나타냅니다. adj[i][i]는 항상 0입니다. 비용은 1 이상 1,000,000 이하의 정수입니다.

세째 줄에 핵심 도시의 개수 K (1  K  N)가 주어집니다. 넷째 줄에 핵심 도시 K개의 번호가 공백으로 구분되어 주어집니다.

Output

모든 조건을 만족하면서 모든 도시를 연결하는 최소 비용을 출력합니다.

Sample Input Copy

4
0 10 20 30
10 0 5 15
20 5 0 25
30 15 25 0
2
0 2

Sample Output Copy

30

HINT

핵심 도시는 0과 2입니다.

핵심 도시 0과 2는 직접 연결되거나 핵심 도시만을 통해 연결되어야 합니다.

최소 비용은 0-2 (20) 핵심 도시가 아닌 도시는 1과 3입니다.

도시 1은 핵심 도시 0에 연결 (비용 10).

도시 3은 핵심 도시 2에 연결 (비용 25).

총 비용은 20 + 10 + 25 = 55.


아니면, 도시 1은 핵심 도시 2에 연결 (비용 5). 도시 3은 핵심 도시 0에 연결 (비용 30) 총 비용은 20 + 5 + 30 = 55.

다른 방법으로는 

도시 1은 핵심 도시 0에 연결 (비용 10).

도시 3은 핵심 도시 0에 연결 (비용 30).

도시 0-2 (20)

총 비용은 10 + 30 + 20 = 60.