#3479. 星际旅行规划

星际旅行规划

题目描述

在遥远的未来,人类已经可以自由穿梭于星际之间。银河系中有 NN 个重要的空间站,编号从 11NN。你是一名星际旅行者,要从 11 号空间站出发,最终到达 NN 号空间站。

你获得了一份古老的星图,上面记载着一条神秘的旅行路线 A1,A2,,AMA_1, A_2, \dots, A_M。如果你的旅行轨迹中依次经过这些空间站(不一定连续经过),就能激活一个古老的星际传送门,获得传说中的宝藏。

但是,星际旅行充满了危险。每个空间站之间的航线上都可能遇到星际海盗、陨石带、黑洞等危险。经过多年的观测,科学家已经计算出任意两个空间站之间的危险指数 Di,jD_{i,j}(数值越大表示越危险)。

你希望在获得宝藏的前提下,使得整个旅程的总危险指数尽可能小。请你计算这个最小的总危险指数是多少。

输入格式

第一行包含两个用空格隔开的正整数 NNMM,分别表示空间站的数量和神秘路线中空间站的个数。

接下来 MM 行,每行一个整数 AiA_i,表示神秘路线中第 ii 个必须经过的空间站编号。保证 A1=1A_1 = 1AM=NA_M = N

接下来 NN 行,每行包含 NN 个用空格隔开的非负整数,其中第 ii 行的第 jj 个数表示从 ii 号空间站到 jj 号空间站的航线的危险指数。保证第 ii 行第 ii 列的数为 00

输出格式

输出一行一个整数,表示在找到宝藏的前提下,整个旅程的最小总危险指数。

输入输出样例 #1

输入 #1

3 4
1
2
1
3
0 5 1
5 0 2
1 2 0

输出 #1

7

输入输出样例 #2

输入 #2

4 3
1
3
4
0 2 5 8
2 0 3 6
5 3 0 4
8 6 4 0

输出 #2

9

输入输出样例 #3

输入 #3

5 5
1
2
3
4
5
0 10 20 30 40
10 0 15 25 35
20 15 0 12 18
30 25 12 0 8
40 35 18 8 0

输出 #3

45

数据范围

子任务编号 数据点占比 NN MM 危险指数范围
11 20%20\% 10\leq 10 100\leq 100 0D1000 \leq D \leq 100
22 30%30\% 50\leq 50 1000\leq 1000 0D100000 \leq D \leq 10000
33 50%50\% 100\leq 100 10000\leq 10000 0D1000000 \leq D \leq 100000

对于全部数据,保证:

  • 1N1001 \leq N \leq 100
  • 2M100002 \leq M \leq 10000
  • 0Di,j1000000 \leq D_{i,j} \leq 100000
  • Di,i=0D_{i,i} = 0
  • A1=1A_1 = 1AM=NA_M = N
  • 注意:Di,jD_{i,j} 不一定等于 Dj,iD_{j,i},即危险指数可能不对称