Polygon

Đề bài

Mô tả

Cho một ma trận vuông cạnh n ban đầu toàn ký tự 0. Phía trên mỗi cột (cột j) đặt một khẩu súng bắn xuống dưới, và bên trái mỗi hàng (hàng i) đặt một khẩu súng bắn sang phải — tổng cộng 2n khẩu.

Mỗi lần bắn, viên đạn là ký tự 1. Tại một thời điểm chỉ có một khẩu bắn. Viên đạn bay theo hướng của khẩu súng (từ trên xuống nếu là súng cột, từ trái sang phải nếu là súng hàng) cho đến khi:

  • chạm vào biên đối diện của ma trận, hoặc
  • chạm vào một ô đã chứa ký tự 1.

Khi đó nó dừng lại và chiếm ô liền trước vị trí va chạm. Mỗi khẩu súng có thể bắn tùy ý số lần.

Cho ma trận kết quả gồm ký tự 01. Hãy xác định xem có tồn tại một chuỗi phát bắn nào đó dẫn đến ma trận này hay không.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t — số test (1t1000).
  • Mỗi test bắt đầu bằng dòng chứa số nguyên n (1n50) — kích thước ma trận. Tiếp theo là n dòng, mỗi dòng gồm n ký tự 0 hoặc 1, mô tả ma trận sau quá trình bắn.
  • Tổng diện tích của các ma trận trong một test không vượt quá 105.

Dữ liệu ra

Với mỗi test, in ra YES nếu tồn tại chuỗi phát bắn dẫn tới ma trận đã cho, ngược lại in NO. Các chữ cái có thể viết hoa hoặc thường tuỳ ý.

Ràng buộc

  • 1t1000
  • 1n50
  • Tổng n2 qua tất cả các test không vượt quá 105.

Ví dụ

Input Output Giải thích
5
4
0010
0011
0000
0000
2
10
01
2
00
00
4
0101
1111
0101
0111
4
0100
1110
0101
0111
YES
NO
YES
YES
NO
Test 2: ô (1,1) chứa 1 nhưng nếu bắn từ bất kỳ khẩu súng nào, viên đạn sẽ tiếp tục bay qua ô này — không có gì chặn lại. Test 5: ô (1,2)=1 không có 1 ngay bên dưới hay bên phải nó (mà cũng không nằm ở hàng/cột cuối), nên không thể đạt được.
1
3
100
000
000
NO Viên đạn ở ô (1,1) sẽ tiếp tục bay vì không có vật cản ở (2,1) hay (1,2), cũng không phải hàng/cột cuối.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0