在一条直线上,通信管理部门布设了 N 个信号节点构成的通讯链路,按位置从左向后依次编号为 1 \sim N。
每个信号节点有一个具体的设备型号,设第 i 个节点的型号为 T_i (1 \le T_i \le K)。
为了完成一次重要的应急信息广播,工作人员需要将信息 从节点 1 传递到节点 N。
信息可以在满足如下条件的两个节点之间直接传输:
设备型号的兼容关系由一个 K \times K 的矩阵 C 给出:
注意:
请你编程计算出将信息从节点 1 传递到节点 N 所需的最短时间。如果无法实现传递,输出 -1。
第一行包含两个整数 N, K。
第二行包含 N 个整数 T_1, T_2, \dots, T_N。
接下来 K 行描述兼容性矩阵 C,每行是一个长度为 K 的仅包含 0 和 1 的二进制字符串,从上到下第 x 行的第 y 个字符为 C_{xy}。
输出一个整数,为最短通信时间。若无法传输,输出 -1。
5 4 1 4 2 3 4 1010 0001 0110 0100
6
10 7 1 7 2 6 3 5 4 7 1 3 0100000 0000000 0001000 0000100 0000010 0000001 1000000
-1
20 10 1 6 2 7 3 8 4 9 5 10 1 6 2 7 3 8 4 9 10 10 0111110000 1011100000 1101100000 1110100000 1111010001 0000101111 0000010111 0000011011 0000011101 1000011111
19
一种最优的传输方案为:节点编号序列 1 → 4 → 3 → 5。
最短通信时间计算为:|1-4| + |4-3| + |3-5| = 3 + 1 + 2 = 6。
对于 100\% 的数据,满足 1 \le N \le 5 \times 10^4,1 \le K \le 50,1 \le T_i \le K。
| 测试点编号 | N |
|---|---|
| 1 \sim 5 | \le 1000 |
| 4 \sim 10 | \le 5 \times 10^4 |