小z最近在玩某款游戏,其地图可以看成一个平面直角坐标系。
地图上存在n 个小镇,小镇从1 到n 编号。第i 个小镇的坐标为x_{i}, y_{i}。
定义两个小镇的距离为曼哈顿距离,比如小镇i 到小镇j 的距离为|x_{i}-x_{j}| + |y_{i}-y_{j}|,其中,|a|表示取a 的绝对值。
小z在m 个小镇建立了传送门,也就是说,小z可以在任何时候任何瞬间不花费任何代价,直接到达这m 个小镇的任何一个。
小z一开始在小镇1,小z想按1 到n 的顺序访问所有小镇按顺序做任务,问小z需要走过的最短距离是多少。
小z可以提前到达某个小镇,但是必须做完前一个小镇的任务,才能做下一个小镇的任务。
做任务本身不会增加距离。
第一行输入两个整数n,m,表示地图上小镇的数目和小z建立了传送门的小镇数量。
随后n 行,其中第i 行输入两个整数x_{i},y_{i},第i 个小镇的坐标。
随后一行输入m 个整数,表示建立了传送门的小镇编号。
一行一个整数表示答案。
6 2 -10 -10 10 10 0 0 1 -1 -1 1 2 1 3 6
21
对于20%的数据有m=0。
对于40%的数据有m=1。
对于60%的数据有n, m ≤300。
对于100%的数据有1 ≤n ≤5000 0 ≤m ≤n,-10000 ≤x_{i},y_{i} ≤10000数据保证没有任意两个小镇在同一坐标下。
时间限制 | 1 秒 |
内存限制 | 128 MB |