結果
| 問題 |
No.2267 群の公理
|
| コンテスト | |
| ユーザー |
FromBooska
|
| 提出日時 | 2023-04-14 23:02:35 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 45 ms / 2,000 ms |
| コード長 | 1,262 bytes |
| コンパイル時間 | 267 ms |
| コンパイル使用メモリ | 82,260 KB |
| 実行使用メモリ | 52,992 KB |
| 最終ジャッジ日時 | 2024-10-10 14:04:20 |
| 合計ジャッジ時間 | 3,728 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 50 |
ソースコード
# 単位元の列では0123---となる必要がある、行も同様
# 逆元があるのだから各行に単位元が存在する
# 結合律が成り立つためには対角線でミラーの関係が必要
# 自信ないがそれでやってみるか
N = int(input())
matrix = []
unit_test1 = False
unit = -1
for i in range(N):
temp = list(map(int, input().split()))
matrix.append(temp)
if temp == [a for a in range(N)]:
unit_test1 = True
unit = i
unit_test2 = True
for i in range(N):
if matrix[i][unit] != i:
unit_test2 = False
inverse_test1 = True
for i in range(N):
if unit not in matrix[i]:
inverse_test1 = False
inverse_test2 = True
for j in range(N):
temp = set()
for i in range(N):
temp.add(matrix[i][j])
if unit not in temp:
inverse_test2 = False
transpose = [[0]*N for i in range(N)]
for i in range(N):
for j in range(N):
transpose[i][j] = matrix[j][i]
if transpose == matrix:
transpose_test = True
else:
transpose_test = False
ans = 'No'
if unit_test1 == True and unit_test2 == True:
if inverse_test1 == True and inverse_test2 == True:
if transpose_test == True:
ans = 'Yes'
print(ans)
FromBooska