No.3488 距離の公理
問題文
入力に非負整数 $N$ と、非負整数係数 $N$ 次正方行列 $D$ が与えられます。
非負整数係数 $N$ 次正方行列とは?(クリックで開く)
大雑把に言うと、縦 $N$ 行、横 $N$ 列の配置に非負整数を並べたものです。ベクトルと同様、カッコで全体をくくって見やすくします。
例えば $N = 3$ の時は
$\displaystyle A = \left( \begin{array}{ccc} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{array} \right) $
が非負整数係数 $N$ 次正方行列の具体例です。
$N$ 以下の正整数 $i$ と $j$ に対し、非負整数係数 $N$ 次正方行列 $A$ の上から $i$ 行目の左から $i$ 列目にある非負整数を、$A$ の $(i,j)$ 成分と呼びます。
例えば上記した $A$ の例だと、$(1,1)$ 成分が $1$、$(1,2)$ 成分が $2$、$(2,1)$ 成分が $4$ です。
$D$ の $1.$ 非退化性、$2.$ 対称性、$3.$ 三角不等式、$4.$ 強三角不等式を、それぞれ以下の性質として定めます。
- 非退化性: $N$ 以下の任意の正整数 $i$ と $j$ に対し、$D(i,j) = 0$ と $i = j$ は同値である。
- 対称性: $N$ 以下の任意の正整数 $i$ と $j$ に対し、$D(i,j) = D(j,i)$ である。
- 三角不等式: $N$ 以下の任意の正整数 $i$ と $j$ と $k$ に対し、$D(i,j) \leq D(i,k) + D(k,j)$ である。
- 強三角不等式: $N$ 以下の任意の正整数 $i$ と $j$ と $k$ に対し、$D(i,j) \leq \max \{D(i,k),D(k,j)\}$ である。
ただし $N$ 以下の各正整数 $i$ と $j$ に対し、$D$ の $(i,j)$ 成分(上から $i$ 行目)を $D(i,j)$ と書き表します。
$D$ が良い行列であるとは、$D$ が $1.$ 非退化性、$2.$ 対称性、$3.$ 三角不等式を全て満たすということです。
$D$ が超良い行列であるとは、$D$ が $1.$ 非退化性、$2.$ 対称性、$4.$ 強三角不等式を全て満たすということです。
$D$ が良い行列であるか否かや、超良い行列であるか否かを判定してください。
背景
幾何学や整数論においては距離空間や超距離空間という概念が多用されます。$N$ 以下の正整数全体の集合を $I_N$ と置き $D$ を$I_N$ 上の $2$ 変数関数とみなすと、$D$ が良い行列である必要十分条件は $(I_N,D)$ が距離空間であることであり、$D$ が超良い行列である必要十分条件は $(I_N,D)$ が超距離空間であることです。従ってこの問題は $(I_N,D)$ が距離空間であるか否かや超距離空間であるか否かを判定する問題と等価です。
入力
入力は以下の形式で標準入力から $1 + N$ 行で与えられます:- $1$ 行目に $N$ が与えられます。
- $N$ 以下の各正整数 $i$ に対し、$1 + i$ 行目に $N$ 以下の各正整数 $j$ に対する $D(i,j)$ が $j$ の小さい順に半角空白区切りで与えられます。
$N$ $D(1,1)$ $\cdots$ $D(1,N)$ $\vdots$ $D(N,1)$ $\cdots$ $D(N,N)$
制約
入力は以下の制約を満たします:
- $N$ は $1 \leq N \leq 10$ を満たす整数である。
- $N$ 以下の任意の正整数 $i$ と $j$ に対し、$D(i,j)$ は $0 \leq D(i,j) \leq 10$ を満たす整数である。
出力
$D$ が良い行列である場合はYesと、良い行列ではない場合はNoと $1$ 行目に出力してください。
$D$ が超良い行列である場合はYesと、超良い行列ではない場合はNoと $2$ 行目に出力してください。
最後に改行してください。
サンプル
サンプル1
入力
1 0
出力
Yes Yes
非負整数係数 $1$ 次正方行列 $D = (0)$ は良い行列でありかつ超良い行列です。
距離空間を知っている人向けに言うと、この $D$ は $I_N = \{1\}$ の自明距離を表します。
サンプル2
入力
1 1
出力
No No
非負整数係数 $1$ 次正方行列 $D = (1)$ は $1.$ 非退化性を満たさないため、良い行列でも超良い行列でもありません。
サンプル3
入力
3 0 1 2 1 0 1 2 1 0
出力
Yes No
非負整数係数 $3$ 次正方行列
$\displaystyle D = \left( \begin{array}{rcl} \displaystyle 0 &\displaystyle 1 &\displaystyle 2 \\ \displaystyle 1 &\displaystyle 0 &\displaystyle 1 \\ \displaystyle 2 &\displaystyle 1 &\displaystyle 0 \end{array} \right) $
は良い行列ですが、$4.$ 超三角不等式を満たさないので超良い行列ではありません。
実数を知っている人向けに言うと、この $D$ はユークリッド距離を $I_N = \{1,2,3\}$ に制限したものを表します。
サンプル4
入力
3 0 2 1 2 0 2 1 2 0
出力
Yes Yes
非負整数係数 $3$ 次正方行列
$\displaystyle D = \left( \begin{array}{rcl} \displaystyle 0 &\displaystyle 2 &\displaystyle 1 \\ \displaystyle 2 &\displaystyle 0 &\displaystyle 2 \\ \displaystyle 1 &\displaystyle 2 &\displaystyle 0 \end{array} \right) $
は良い行列でありかつ超良い行列です。
$p$ 進数を知っている人向けに言うと、この $D$ は $2$ 進距離を $2$ 倍したものを $I_N = \{1,2,3\}$ に制限したものを表します。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。