1. paizaラーニングトップ
  2. レベルアップ問題集
  3. 行列計算メニュー(言語選択)
  4. 問題一覧 Java編
  5. 隣接行列 2 Java編

行列計算メニューのサムネイル
隣接行列 2 Java編(paizaランク A 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

無向グラフのある頂点 u の次数とは、その頂点が繋がる辺の個数です。
無向グラフの全ての頂点の次数が同じ値のとき、そのグラフを正則グラフと呼びます。

無向グラフ(辺に向きがないグラフ)の隣接行列である N 次正方行列 A が与えられます。
隣接行列 A の i 行 j 列目の要素 a_{i, j} は頂点 i と頂点 j を結ぶ辺が何本あるかを表しています。
行列 A が表すグラフが正則グラフかを判定し、正則グラフならYes、正則グラフでないならNoを出力してください。



例えば、入力例 1 が表すのは次のようなグラフです。このグラフは全ての頂点の次数が 2 である正則グラフです。


入力例 2 が表すのは次のような行列です。このグラフは次数が 1 と 2 の頂点があるため、正則グラフではありません。


入力例 3 が表すのは次のような行列です。このグラフは全ての頂点の次数が 0 である正則グラフです。

入力される値

N
a_{1,1} a_{1,2} ... a_{1,N}
a_{2,1} a_{2,2} ... a_{2,N}
...
a_{N,1} a_{N,2} ... a_{N,N}


・1 行目では行列のサイズ(グラフの頂点数) N が与えられます。
・次の N 行では行列 A の要素 a_{i, j} が、行ごとに、空白区切りで与えられます。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

行列 A が表すグラフが正則グラフかを判定し、正則グラフならYes、正則グラフでないならNoを出力してください。
末尾に改行を入れ、余計な文字、空行を含んではいけません。

条件

すべてのテストケースにおいて, 以下の条件をみたします

・入力はすべて整数
・与えられる隣接行列が表すグラフは自己ループを持たない
・与えられる隣接行列が表すグラフは多重辺を持つ場合がある
・1 ≦ N ≦ 100
・0 ≦ a_{i, j} ≦ 3 (1 ≦ i, j ≦ N)

入力例1

4
0 1 0 1
1 0 1 0
0 1 0 1
1 0 1 0

出力例1

Yes

入力例2

4
0 2 0 0
2 0 0 0
0 0 0 1
0 0 1 0

出力例2

No

入力例3

5
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

出力例3

Yes

問題一覧へ戻る

ページの先頭へ戻る