你来到了一个有n个城市的国家,你有一个预先制定好的旅游计划:x_1-x_2-x_3-\dots-x_k。这个旅游计划中相邻的城市间x_1和x_2之间、x_2和x_3之间\dots x_k-1和x_k之间都有边。且一定是从1出发,n结束。
但是你已经很累了,只想尽快结束。因为除了这些边之外还有一些双向边,于是你决定在之前的计划上跳过某些城市,快速结束。
具体地,如果 i<j 且x_i和x_j之间有连边,你就可以跳过x_i和x_j之间的所有的点,直接到达x_j。
为了有始有终,不允许跳过第1个点和第n个点。你需要输出最少能将旅游计划中的边的长度变为多少。
第一行一个正整数T,表示数据组数,接下来T组数据。
每组数据第一行三个正整数n,m,k,表示图的点数、边数以及所给路径的长度。
接下来一行k+1个数,描述从点1到点n的一条路径的同时描述k条边。保证第一个数是1,第k+1个数是n。
接下来m-k行,每行两个正整数u,v,表示在所描述k条边外,还有一条u,v两个节点之间的双向边。
对每组数据输出一行一个正整数,表示答案。
1 7 8 5 1 2 3 4 5 7 1 3 3 6 6 7
4
对于30\%的数据,有2\leq n\leq15
对于60\%的数据,有2\leq n\leq200。
对于100\%的数据,有1\leq T\leq100,2\leq n\leq 50000, 1\leq k
所描述的路径一定一条是合法的从1到n的路径,路径上的点两两不同。
另外输入数据中剩下的m-k条边可能是自环,也可能是重边,且可能与任意的边重复。
时间限制 | 1 秒 |
内存限制 | 128 MB |