아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

행렬 변환

시간 제한1초메모리 제한128 MB

요약
인접한 두 칸을 함께 1씩 올리거나 내리는 연산을 반복해 각 행렬을 0으로 만들 수 있는지 판정합니다.
난이도

보통10점 중 6점

유형
수학, 그리디
정답자
아직 제출이 없습니다

문제

정수로 채워진 R×CR \times C 행렬 AA가 있다. 행이 RR개이고, 각 행에 정수가 CC개씩 놓여 있다.

두 정수가 들어 있는 칸이 변을 맞대고 있으면 두 정수는 인접하다. 예를 들어 아래 격자에서

0 1 2
3 4 5
6 7 8

(0,1)(0, 1), (4,5)(4, 5), (1,4)(1, 4), (5,2)(5, 2)는 인접하지만 (0,4)(0, 4), (2,6)(2, 6), (5,7)(5, 7)은 인접하지 않다.

이 행렬에는 한 종류의 연산만 쓸 수 있다. 한 번의 연산에서 인접한 두 칸을 고른 뒤, 두 값을 모두 1 늘리거나 모두 1 줄인다. 행렬이 주어졌을 때 이 연산만 반복해서 영행렬로 만들 수 있는지 판정하라. 영행렬은 모든 원소가 0인 행렬이다.

입력

첫째 줄에 행렬의 개수를 나타내는 양의 정수 nn이 주어진다.

각 행렬은 공백 하나로 구분된 RR(2≤R≤302 \le R \le 30)과 CC(2≤C≤302 \le C \le 30)가 적힌 줄로 시작한다. 이어지는 RR개의 줄에는 각각 정수가 CC개씩 주어진다. 이 정수는 모두 −20-20 이상 2020 이하이다.

입력으로 주어지는 행렬에는 0이 아닌 값이 적어도 하나 있다.

출력

각 행렬마다 영행렬로 만들 수 있으면 YES, 그렇지 않으면 NO를 한 줄에 출력하라. 대문자로만 출력한다.

예제1

  1. 예제 1

    입력
    6
    3 3
    -2 2 2
    1 1 0
    2 -2 -2
    3 3
    -1 0 1
    -2 -1 1
    0 1 2
    3 3
    -1 0 1
    0 2 -1
    -1 1 2
    3 3
    -1 2 1
    -1 -1 -3
    1 1 -1
    2 3
    0 -2 3
    1 3 1
    2 3
    3 1 1
    2 0 1
    
    예상 출력
    YES
    NO
    NO
    YES
    NO
    YES