結果
問題 | No.2267 群の公理 |
ユーザー |
|
提出日時 | 2023-04-14 21:46:40 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 39 ms / 2,000 ms |
コード長 | 1,206 bytes |
コンパイル時間 | 1,766 ms |
コンパイル使用メモリ | 198,976 KB |
最終ジャッジ日時 | 2025-02-12 06:32:03 |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 50 |
ソースコード
#include <bits/stdc++.h>using namespace std;typedef long long ll;// typedef unsigned long long ull;// const ll INF = numeric_limits<ll>::max() / 4;// const int INF = numeric_limits<int>::max() / 4;// cout << std::fixed << std::setprecision(15);int main() {int N;cin >> N;vector X(N, vector<int>(N, 0));for(int i = 0; i < N; i++){for(int j = 0; j < N; j++){cin >> X[i][j];}}// 群は、結合律、単位元、逆元bool f = true;for(int i = 0; i < N; i++){for(int j = 0; j < N; j++){for(int k = 0; k < N; k++){// i x (j x k) = (i x j) x kif(X[i][X[j][k]] != X[X[i][j]][k]) f = false;}}}if(!f){cout << "No" << endl;return 0;}// 単位元f = false;int u = -1;for(int i = 0; i < N; i++){bool g = true;for(int j = 0; j < N; j++){if(X[i][j] != j || X[j][i] != j) g = false;}if(g){f = true;u = i;}}if(!f){cout << "No" << endl;return 0;}// 逆元f = true;for(int i = 0; i < N; i++){bool g = false;for(int j = 0; j < N; j++){if(X[i][j] == u && X[j][i] == u) g = true;}if(!g) f = false;}if(!f){cout << "No" << endl;return 0;}cout << "Yes" << endl;return 0;}