spoj#SERVICE. Mobile Service

Mobile Service

以下题面由 AI 翻译。

公司为分布在不同城市的合作伙伴提供服务。该公司有三名移动的移动服务员工。如果发生请求,某位员工必须从当前位置移动到请求的位置(如果那里没有员工的话),以便满足请求。只有一个人可以在任何时候移动。他们只能在请求时移动,并且不允许在同一位置。将员工从位置 p 移动到位置 q 的成本为给定的 C(p,q)。成本函数不一定是对称的,但不移动时的成本为 0,即 C(p,p)=0。公司必须按照严格的首来首服务原则满足请求序列。目标是使为给定的一系列请求提供服务的总成本最小化。

任务
编写一个程序,决定为每个请求分配哪位员工,使得为给定的一系列请求提供服务的总成本尽可能小。

输入
第一行包含测试用例的数量 nTest。每个测试用例包含:

  • 每个测试用例的第一行包含两个整数 L 和 N。L(3 ≤ L ≤ 200)是位置数量,N(1 ≤ N ≤ 1000)是请求数量。位置由整数 1 到 L 表示。
  • 接下来的 L 行每行有 L 个非负整数。第 i+1 行的第 j 个数字是成本 C(i,j),并且小于 2000。

最后,每个测试用例包含 N 个整数,表示请求列表。一个请求由发生该请求的位置标识符表示。最初,三名服务员工位于位置 1、2 和 3。

输出
对于每个测试用例,在单独的一行中输出最小的总成本。

示例

输入:

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

输出:

5