#abc291f. [abc291_f]Teleporter and Closed off
[abc291_f]Teleporter and Closed off
问题描述
有 个城市,编号为城市 ,城市 ,……,城市 。
还有一种单向传送器,可以将你传送到不同的城市。传送器是否可以直接从城市 发送到另一个城市由长度为 的字符串 表示,该字符串由 0
和 1
组成。具体来说,对于 ,
- 如果 ,并且 的第 个字符是
1
,则传送器可以直接将你从城市 送到城市 ; - 否则,它不能直接将你从城市 送到城市 。
解决以下问题,对于 :
你能通过反复使用传送器从城市 到达城市 而不经过城市 吗?如果可以,请打印你需要使用传送器的最小次数;否则,打印 。
约束条件
- 是长度为 的由
0
和1
组成的字符串。 - 如果 ,则 的第 个字符是
0
。 - 和 是整数。
输入
输入以以下格式从标准输入给出:
输出
在一行中打印 个用空格分隔的整数。第 个 整数应该是对于 的问题的答案。
示例输入1
5 2
11
01
11
10
00
示例输出1
2 3 2
传送器可以将你从城市 送到城市 和 ; 传送器可以将你从城市 送到城市 ; 传送器可以将你从城市 送到城市 和 ; 传送器可以将你从城市 送到城市 ; 传送器无法将你从城市 送到其他城市。
因此,有三条路径可以从城市 到达城市 :
- 路径 :城市 城市 城市 城市 ;
- 路径 :城市 城市 城市 城市 ;
- 路径 :城市 城市 城市 ;
在这些路径中,
- 两条路径,路径 和路径 ,都没有经过城市 。其中,路径 需要使用传送器的最小次数(两次)。
- 路径 是唯一不经过城市 的路径。需要使用传送器三次。
- 路径 是唯一不经过城市 的路径。需要使用传送器两次。
因此,应该打印 、 和 ,用空格分隔。
示例输入2
6 3
101
001
101
000
100
000
示例输出2
-1 3 3 -1
从城市 到达城市 的唯一路径是城市 城市 城市 城市 。
对于 ,无法从城市 到达城市 而不经过城市 。
对于 ,上述路径满足条件;需要使用传送器三次。
因此,应该打印 、、 和 ,用空格分隔。
请注意,传送器是单向的;传送器可以将你从城市 送到城市 ,但不能从城市 送到城市 , 因此,以下路径无效:城市 城市 城市 城市 。