#atabc443e. Climbing Silver

Climbing Silver

题目描述

有一个 N×NN \times N 的网格,位于从上往下第 ii 行和从左往右第 jj 列的单元格叫做 (i,j)(i,j)

网格由长度为 NN 的字符串 S1,S2,,SNS_1,S_2,\dots,S_N 描述。如果 SiS_i 的第 jj 个字符是 .(i,j)(i,j) 就是一个空单元格;如果是 #(i,j)(i,j) 就是一个墙单元格。

最初,高桥君位于空单元格 (N,C)(N,C),并重复以下动作 N1N-1 次:

  • 如果他当前位于 (r,c)(r,c),则指定 (r1,c1),(r1,c),(r1,c+1)(r-1,c-1),(r-1,c),(r-1,c+1) 中的一个作为目的地。在此,他不能指定网格中不存在的单元格作为目的地。
  • 如果目的地 (a,b)(a,b) 是一个墙单元格,则会出现以下情况:
    • 如果对于所有满足 a<iNa < i \le N 的整数 ii,即 i[a+1,N]i\in[a+1,N](i,b)(i,b) 当前是一个空单元格,那么他将摧毁位于 (a,b)(a,b) 的墙并移动到该处。也就是说,(a,b)(a,b) 变成空格,他移动到 (a,b)(a,b)
    • 否则,他将无法移动。在这种情况下,即使他没有进行 N1N-1 次移动,也会立即结束移动。
  • 如果目的地 (a,b)(a,b) 是一个空格,那么他会移动到 (a,b)(a,b)

输出长度为 NN 的字符串 RR,满足以下条件:

  • 如果他在移动过程中没有失败,可以到达 (1,i)(1,i),那么 RR 的第 ii 个字符是 1
  • 否则, RR 的第 ii 个字符为 0

给你 TT 个测试用例,请逐一解决。

输入格式

输入内容由标准输入法提供,格式如下:

TT\\ case1\text{case}_1\\ case2\text{case}_2\\ \vdots\\ caseT\text{case}_T\\

每个测试用例的格式如下:

NN CC\\ S1S_1\\ S2S_2\\ \vdots\\ SNS_N\\

输出格式

输出 TT 行。

ii 行应包含第 ii 个测试用例的答案。

输入输出样例 #1

输入 #1

5
5 3
.###.
..#..
#.#.#
#...#
##..#
2 2
##
..
4 1
####
####
####
.###
3 3
...
...
...
10 3
##.##.##.#
.####..#..
...#.#..#.
.#.#.#.#..
...####...
#.#.##....
.##...#...
#.##.....#
#....###.#
.#..#.#...

输出 #1

10111
11
1000
111
0011010010

说明/提示

样例 11 解释

此输入包含五个测试用例。

例如,对于第一个测试用例,他可以在如下运动中到达 (1,3)(1,3) 而不会失败:

  • 最初,他位于 (5,3)(5,3)
  • 他移动到空格 (4,2)(4,2)
  • (3,3)(3,3) 是一个有墙的单元格,但是由于 (4,3),(5,3)(4,3),(5,3) 目前都是空单元格,他摧毁了 (3,3)(3,3) 处的墙并移动到 (3,3)(3,3)
  • (2,3)(2,3) 是一个有墙的单元格,但是由于 (3,3),(4,3),(5,3)(3,3),(4,3),(5,3) 目前都是空格,因此他摧毁了 (2,3)(2,3) 处的墙,并移动到 (2,3)(2,3) 处。
  • (1,3)(1,3) 是一个有墙的单元格,但是由于 (2,3),(3,3),(4,3),(5,3)(2,3),(3,3),(4,3),(5,3) 目前都是空格,因此他摧毁了 (1,3)(1,3) 处的墙,并移动到 (1,3)(1,3) 处。

他可以到达 (1,1),(1,3),(1,4),(1,5)(1,1),(1,3),(1,4),(1,5) 而不会在移动过程中失败,因此打印 10111

数据规模与约定

  • T,N,CT,N,C 是整数
  • 1T500001 \le T \le 50000
  • 2N30002 \le N \le 3000
  • 1CN1 \le C \le N
  • SiS_i 是长度为 NN 的字符串,由 .# 组成
  • SNS_N 的第 CC 个字符是 .
  • 对于每个输入,N2N^2 的总和不超过 9×1069 \times 10^6