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

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

백 칸 계산 퍼즐

시간 제한2초메모리 제한1024 MB

요약
w×h 덧셈표에서 w+h-1개의 칸이 주어질 때, 위쪽과 왼쪽의 수가 유일하게 정해지는지 판정한다.
난이도

보통10점 중 7점

유형
그래프, 유니온 파인드, 수학, DFS
정답자
아직 제출이 없습니다

문제

백 칸 계산은 계산 훈련의 한 종류이다. 백 칸 계산에서는 10×10개의 빈 칸이 있는 종이가 주어진다. 10개의 열 위쪽에 0부터 9까지의 수가 임의의 순서로 적혀 있다. 10개의 행 왼쪽에도 0부터 9까지의 수가 임의의 순서로 적혀 있다. 아래 그림의 예처럼, 각 빈 칸에 위쪽 수와 왼쪽 수의 합을 채워 넣는다.

더 일반화된 훈련을 생각할 수 있다. 그러한 훈련은 열과 행의 수가 다를 수 있으며, 이를 w × h라 하자. 위쪽과 왼쪽에 적히는 수는 임의의 정수가 될 수 있다.

Hideo는 일반화된 백 칸 계산을 바탕으로 퍼즐을 설계하고 있다. 종이에는 일부 답 칸이 수로 채워져 있지만, 위쪽과 왼쪽의 수는 생략되어 있다. 퍼즐은 채워진 수와 일치하는 생략된 수를 찾는 것이다.

Hideo는 모든 올바른 합으로 채워진 종이를 준비한 뒤 그중 일부 합을 지우는 방식으로 퍼즐을 만들기로 했다. 이는 퍼즐에 적어도 하나의 해가 존재함을 보장한다. 그러나 해의 존재만으로는 충분하지 않다. 해가 유일해야 한다.

Hideo는 여러 번의 시행을 거쳐, 위쪽 수 중 가장 왼쪽 수를 0으로 고정했을 때 w × h개의 칸을 가진 퍼즐이 w + h − 1개의 합을 남겼을 때 유일한 해를 가질 수 있음을 알아냈다. 그러나 그는 유일한 해를 얻기 위해 어떤 칸을 남겨야 하는지는 알아내지 못했다.

당신의 임무는 Hideo가 만든 각 퍼즐 후보에 대해 해의 유일성을 판정하는 프로그램을 작성하여 그를 돕는 것이다.

입력

입력은 최대 100개의 데이터셋으로 구성되며, 각 데이터셋의 형식은 다음과 같다.

w h
x1 y1 n1
...
xk yk nk

첫 줄의 w와 h는 각각 한 행과 한 열에 있는 답 칸의 수이다(2 ≤ w ≤ 100, 2 ≤ h ≤ 100). 그다음에는 k개의 수가 답 칸에 남아 있다(k = w + h − 1). 두 번째 줄부터 시작하는 k개의 줄은 수 ni가 왼쪽에서 xi번째, 위에서 yi번째 칸에 있음을 나타낸다. xi, yi, ni는 1 ≤ xi ≤ w, 1 ≤ yi ≤ h, −100 ≤ ni ≤ 100을 만족하는 정수이다. 여기서 x = 1은 가장 왼쪽, y = 1은 가장 위를 뜻한다. 서로 다른 i와 j에 대해 xi ≠ xj이거나 yi ≠ yj이다.

입력의 끝은 두 개의 0이 공백으로 구분된 한 줄로 표시된다.

출력

각 데이터셋에 대해, 퍼즐에 유일한 해가 있으면 YES를, 그렇지 않으면 NO를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    2 2
    1 1 10
    1 2 1
    2 2 5
    3 3
    1 1 1
    1 2 2
    2 2 3
    2 3 4
    3 3 5
    3 3
    1 1 1
    1 3 3
    2 2 3
    3 1 3
    3 3 5
    3 2
    1 1 8
    1 2 7
    2 1 7
    3 2 5
    6 6
    1 1 -2
    1 4 4
    2 2 2
    3 3 3
    3 4 8
    4 2 -4
    4 6 1
    5 5 4
    5 6 5
    6 1 -7
    6 3 -6
    6 6
    1 2 3
    1 4 0
    2 1 -3
    2 3 -1
    3 1 0
    3 2 6
    4 6 0
    5 4 -5
    5 5 -10
    6 3 -6
    6 5 -10
    6 6
    1 5 -2
    2 5 -1
    3 5 -7
    4 1 5
    4 2 -1
    4 3 4
    4 4 3
    4 5 -1
    4 6 2
    5 5 -6
    6 5 0
    2 6
    1 1 -2
    1 2 -1
    1 3 -3
    1 4 -2
    1 5 -5
    1 6 -2
    2 4 0
    0 0
    
    예상 출력
    YES
    YES
    NO
    YES
    NO
    NO
    YES
    YES