#U2021JG2. Telephone
Telephone
Farmer John 的N 头奶牛,编号为 1…N,站成一行(1≤N≤5⋅10)。第i 头奶牛的品种编号为b,范围为 1…K,其中 1≤K≤50。奶牛们需要你帮助求出如何最优地从奶牛 1 传输一条信息到奶牛 N。从奶牛 i 传输信息到奶牛 j 花费时间 |i−j|。然而,不是所有品种的奶牛都愿意互相交谈,如一个 K×K 的方阵S 所表示,其中如果一头品种 i 的奶牛愿意传输一条信息给一头品种 j 的奶牛,那么 S=1,否则为 0。不保证 S=S,并且如果品种 i 的奶牛之间不愿意互相交流时可以有 S=0。
请求出传输信息所需的最小时间。
输入格式(从终端/标准输入读入):
输入的第一行包含 N 和 K。下一行包含 N 个空格分隔的整数b,b,…,b。
以下K 行描述了方阵S。每行包含一个由 K 个二进制位组成的字符串,从上往下第 i 个字符串的第j 位为 S。
输出格式(输出至终端/标准输出):
输出一个整数,为需要的最小时间。如果不可能从奶牛 1 传输信息至奶牛 N,输出 −1。
输入样例:
5 4
1 4 2 3 4
1010
0001
0110
0100
输出样例:
6
最优传输序列为 1→4→3→5。总时间为 |1−4|+|4−3|+|3−5|=6。
测试点性质:
- 测试点 1-5 满足N≤1000。
- 测试点 6-13 没有额外限制。