プログラミングでパズルを解いてみよう。
n × n の数字が格子状に並んでいる。数字のいくつかは丸で囲まれており、これらを起点と呼ぶことにする。パズルのルールは以下のとおりである:
下図に示すように、パズルのゴールはすべての起点を使い、すべての数字に線を引くことである。
あなたの仕事は、パズルを解くプログラムを作成することである。 ただしこの問題では、与えられたパズルが解けるものかどうかを判定するだけでよい。
入力は複数のデータセットからなる。各データセットの形式は以下のとおりである:
n n × n の数字
n × n の数字が与えられるパズルを示し、起点の数字は負の数として与えられる。
n が 0 のとき入力の終わりを示す。
n は 3 以上 8 以下、起点以外の数字は 1 以上 50 以下、起点は -50 以上 -1 以下であると仮定してよい。また、入力されるパズルの性質として以下のことを仮定してよい:
各データセットに対して、パズルが解けるものであれば "YES" を、そうでなければ "NO" と1行に出力せよ。
3 -3 1 1 2 -4 1 2 1 -1 3 -4 1 1 1 1 -6 1 -5 3 4 -8 6 -2 1 2 -7 -2 1 1 -1 1 1 1 1 1 -5 6 2 2 3 -7 3 2 1 -10 1 1 3 2 2 6 5 2 -6 1 3 4 -23 2 2 5 3 3 -6 2 3 7 -7 2 3 2 -5 -13 6 2 2 3 -7 3 2 1 -10 1 1 3 2 2 6 5 2 -6 1 3 4 -23 2 2 5 3 3 -6 2 3 7 -7 2 3 2 -5 -12 0
YES NO NO YES NO