AT_abc291_f [ABC291F] Teleporter and Closed off
题目描述
有 $N$ 个城市,编号为城市 $1$、城市 $2$、$\ldots$、城市 $N$。
有一些不同城市之间可以通过单向传送器进行移动。对于每个城市 $i$($1\leq i\leq N$),可以通过长度为 $M$ 的仅由 `0` 和 `1` 组成的字符串 $S_i$ 来表示城市 $i$ 通过传送器可以直接到达的城市。具体来说,对于 $1\leq j\leq N$:
- 如果 $1\leq j-i\leq M$ 且 $S_i$ 的第 $j-i$ 个字符为 `1`,则可以从城市 $i$ 直接移动到城市 $j$。
- 否则,不能从城市 $i$ 直接移动到城市 $j$。
对于 $k=2,3,\ldots,N-1$,请解决以下问题:
> 通过重复使用传送器,**不经过城市 $k$**,能否从城市 $1$ 移动到城市 $N$?如果可以,请输出所需传送器使用次数的最小值;如果不可以,输出 $-1$。
输入格式
输入以以下格式从标准输入给出。
> $N$ $M$
> $S_1$
> $S_2$
> $\vdots$
> $S_N$
输出格式
请将 $N-2$ 个整数以空格分隔输出在一行。第 $i$($1\leq i\leq N-2$)个数为对应 $k=i+1$ 的问题答案。
说明/提示
## 限制条件
- $3\leq N\leq 10^5$
- $1\leq M\leq 10$
- $MN$,则 $S_i$ 的第 $j$ 个字符为 `0`
- $N,M$ 为整数
## 样例解释 1
通过传送器,每个城市可以直接到达以下城市:
- 城市 $1$ 可以到达城市 $2,3$。
- 城市 $2$ 可以到达城市 $4$。
- 城市 $3$ 可以到达城市 $4,5$。
- 城市 $4$ 可以到达城市 $5$。
- 城市 $5$ 无法到达其它城市。
因此,从城市 $1$ 到城市 $5$ 的路径有:
- 路径 $1$:城市 $1\to 2\to 4\to 5$
- 路径 $2$:城市 $1\to 3\to 4\to 5$
- 路径 $3$:城市 $1\to 3\to 5$
不经过城市 $2$ 的路径有路径 $2$ 和路径 $3$,其中最少使用传送器次数的是路径 $3$,共 $2$ 次。
不经过城市 $3$ 的路径只有路径 $1$,共 $3$ 次。
不经过城市 $4$ 的路径只有路径 $3$,共 $2$ 次。
因此,依次输出 $2,3,2$。
## 样例解释 2
从城市 $1$ 到城市 $6$ 只有一种方式:城市 $1\to 2\to 5\to 6$,因此对于 $k=2,5$,不存在不经过城市 $k$ 的路径;对于 $k=3,4$,上述方式满足条件,传送器使用次数为 $3$。
因此,依次输出 $-1,3,3,-1$。
注意,由于传送器是单向的,虽然可以从城市 $3$ 到城市 $4$,但不能从城市 $4$ 到城市 $3$,因此不能通过城市 $1\to 4\to 3\to 6$ 这样的方式移动。
由 ChatGPT 4.1 翻译