#ABC291F. 传送门与封锁

传送门与封锁

传送门与封锁

题目描述

NN 个城市,编号为城市 11、城市 22、……、城市 NN

还有一些单向传送门,可以将你送到不同的城市。 从城市 ii (1iN)(1\leq i\leq N) 是否能直接传送到其他城市,由长度为 MM 的、由 0 和 1 组成的字符串 SiS_i 表示。具体地,对于 1jN1\leq j\leq N:

  • 如果 1jiM1\leq j-i\leq MSiS_i 的第 (ji)(j-i) 个字符为 1,则存在从城市 ii 直接传送到城市 jj 的传送门;
  • 否则,不存在从城市 ii 直接传送到城市 jj 的传送门。

对每个 k=2,3,,N1k=2,3,\ldots, N-1,解决以下问题:

能否通过反复使用传送门,在不经过城市 kk 的情况下从城市 11 到达城市 NN? 如果能够到达,输出需要使用传送门的最少次数;否则输出 1-1

输入格式

输入按以下格式从标准输入给出:

NN MM
S1S_1
S2S_2
\vdots
SNS_N

输出格式

在一行中输出 N2N-2 个用空格分隔的整数。

ii 个整数 (1iN2)(1\leq i\leq N-2) 应为 k=i+1k=i+1 时问题的答案。

样例

5 2
11
01
11
10
00
2 3 2

传送门可以将你

  • 从城市 11 送到城市 2233;
  • 从城市 22 送到城市 44;
  • 从城市 33 送到城市 4455;
  • 从城市 44 送到城市 55;
  • 从城市 55 无法传送到任何城市。

因此,从城市 11 到城市 55 共有三条路径:

  • 路径 1:城市 11 \to 城市 22 \to 城市 44 \to 城市 55;
  • 路径 2:城市 11 \to 城市 33 \to 城市 44 \to 城市 55;
  • 路径 3:城市 11 \to 城市 33 \to 城市 55

在这些路径中,

不经过城市 22 的路径有路径 2 和路径 3 两条。其中,路径 3 使用传送门的次数最少(两次)。

不经过城市 33 的路径只有路径 1。它需要使用三次传送门。

不经过城市 44 的路径只有路径 3。它需要使用两次传送门。

因此,应输出用空格分隔的 223322

6 3
101
001
101
000
100
000
-1 3 3 -1

从城市 11 到城市 66 的唯一路径是城市 11 \to 城市 22 \to 城市 55 \to 城市 66

对于 k=2,5k=2,5,不经过城市 kk 时无法从城市 11 到达城市 66

对于 k=3,4k=3,4,上述路径满足条件;它需要使用三次传送门。

因此,应输出用空格分隔的 1-133331-1

注意传送门是单向的; 传送门可以从城市 33 送到城市 44, 但不能从城市 44 送到城市 33

因此,例如以下路径是无效的: 城市 11 \to 城市 44 \to 城市 33 \to 城市 66

数据范围

  • 3N1053 \leq N \leq 10^5
  • 1M101\leq M\leq 10
  • M<NM\lt N
  • SiS_i 是由 0 和 1 组成的长度为 MM 的字符串。
  • 如果 i+j>Ni+j\gt N,则 SiS_i 的第 jj 个字符为 0。
  • NNMM 是整数。
难度 提高+/省选
通过率
尝试 0
已通过 0
ID
2629
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签