atcoder#ABC291F. [ABC291F] Teleporter and Closed off

[ABC291F] Teleporter and Closed off

配点 : 500500

問題文

NN 個の都市があり、都市 11, 都市 22, \ldots, 都市 NN と番号づけられています。 いくつかの異なる都市の間は一方通行のテレポーターによって移動できます。 都市 ii (1iN)(1\leq i\leq N) からテレポーターによって直接移動できる都市は 01 からなる長さ MM の文字列 SiS_i によって表されます。具体的には、1jN1\leq j\leq N に対して、

  • 1jiM1\leq j-i\leq M かつ SiS_i(ji)(j-i) 文字目が 1 ならば、都市 ii から都市 jj に直接移動できる。
  • そうでない時、都市 ii から都市 jj へは直接移動できない。

k=2,3,,N1k=2,3,\ldots, N-1 に対して次の問題を解いてください。

テレポータを繰り返し使用することによって、都市 k を通らずに都市 11 から 都市 NN へ移動できるか判定し、 できるならばそのために必要なテレポーターの使用回数の最小値を、 できないならば 1-1 を出力せよ。

制約

  • 3N1053 \leq N \leq 10^5
  • 1M101\leq M\leq 10
  • $M
  • SiS_i01 のみからなる長さ MM の文字列
  • i+j>Ni+j>N ならば SiS_ijj 文字目は 0
  • N,MN,M は整数

入力

入力は以下の形式で標準入力から与えられる。

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 からは都市 2,32,3 へ移動できる。
  • 都市 22 からは都市 44 へ移動できる。
  • 都市 33 からは都市 4,54,5 へ移動できる。
  • 都市 44 からは都市 55 へ移動できる。
  • 都市 55 から移動できる都市は存在しない。

よって、都市 11 から都市 55 へ移動する方法は、

  • 経路 11 : 都市 11 \to 都市 22 \to 都市 44 \to 都市 55
  • 経路 22 : 都市 11 \to 都市 33 \to 都市 44 \to 都市 55
  • 経路 33 : 都市 11 \to 都市 33 \to 都市 55

33 つがあり、

  • 都市 22 を通らない経路は経路 22, 経路 3322つであり、そのうちテレポーターの使用回数が最小となるのは経路 33 で、この時 22 回使用する。
  • 都市 33 を通らない経路は経路 11 のみであり、この時テレポーターは 33 回使用する。
  • 都市 44 を通らない経路は経路 33 のみであり、この時テレポーターは 22 回使用する。

となります。よって、2,3,22,3,2 をこの順に空白区切りで出力します。

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 の場合には上の方法が条件をみたし、テレポーターを 33 回使用します。

よって、1,3,3,1-1,3,3,-1 をこの順に空白区切りで出力します。

テレポーターは一方通行であるため、 都市 33 から都市 44 へはテレポーターによって移動できますが、 都市 44 から都市 33 へは移動できず、 都市 11 \to 都市 44 \to 都市 33 \to 都市 66 のような移動はできない事に注意してください。