AT_abc291_f.[ABC291F] Teleporter and Closed off

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有 NN 个城市,编号为城市 11、城市 22、…\ldots、城市 NN。
有一些不同城市之间可以通过单向传送器进行移动。对于每个城市 ii(1≤i≤N1\leq i\leq N),可以通过长度为 MM 的仅由 0 和 1 组成的字符串 SiS_i 来表示城市 ii 通过传送器可以直接到达的城市。具体来说,对于 1≤j≤N1\leq j\leq N:

  • 如果 1≤j−i≤M1\leq j-i\leq M 且 SiS_i 的第 j−ij-i 个字符为 1,则可以从城市 ii 直接移动到城市 jj。
  • 否则,不能从城市 ii 直接移动到城市 jj。

对于 k=2,3,…,N−1k=2,3,\ldots,N-1,请解决以下问题:

通过重复使用传送器,不经过城市 kk,能否从城市 11 移动到城市 NN?如果可以,请输出所需传送器使用次数的最小值;如果不可以,输出 −1-1。

输入格式

输入以以下格式从标准输入给出。

NN MM
S1S_1
S2S_2
⋮\vdots
SNS_N

输出格式

请将 N−2N-2 个整数以空格分隔输出在一行。第 ii(1≤i≤N−21\leq i\leq N-2)个数为对应 k=i+1k=i+1 的问题答案。

输入输出样例

  • 输入#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

说明/提示

限制条件

  • 3≤N≤1053\leq N\leq 10^5
  • 1≤M≤101\leq M\leq 10
  • M<NM<N
  • SiS_i 是仅由 0 和 1 组成的长度为 MM 的字符串
  • 若 i+j>Ni+j>N,则 SiS_i 的第 jj 个字符为 0
  • N,MN,M 为整数

样例解释 1

通过传送器,每个城市可以直接到达以下城市:

  • 城市 11 可以到达城市 2,32,3。
  • 城市 22 可以到达城市 44。
  • 城市 33 可以到达城市 4,54,5。
  • 城市 44 可以到达城市 55。
  • 城市 55 无法到达其它城市。

因此,从城市 11 到城市 55 的路径有:

  • 路径 11:城市 1→2→4→51\to 2\to 4\to 5
  • 路径 22:城市 1→3→4→51\to 3\to 4\to 5
  • 路径 33:城市 1→3→51\to 3\to 5

不经过城市 22 的路径有路径 22 和路径 33,其中最少使用传送器次数的是路径 33,共 22 次。
不经过城市 33 的路径只有路径 11,共 33 次。
不经过城市 44 的路径只有路径 33,共 22 次。

因此,依次输出 2,3,22,3,2。

样例解释 2

从城市 11 到城市 66 只有一种方式:城市 1→2→5→61\to 2\to 5\to 6,因此对于 k=2,5k=2,5,不存在不经过城市 kk 的路径;对于 k=3,4k=3,4,上述方式满足条件,传送器使用次数为 33。

因此,依次输出 −1,3,3,−1-1,3,3,-1。

注意,由于传送器是单向的,虽然可以从城市 33 到城市 44,但不能从城市 44 到城市 33,因此不能通过城市 1→4→3→61\to 4\to 3\to 6 这样的方式移动。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页