結果
問題 | No.2991 Hypercubic Graph Flow |
ユーザー |
![]() |
提出日時 | 2025-01-19 23:17:38 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 91 ms / 2,000 ms |
コード長 | 1,919 bytes |
コンパイル時間 | 2,017 ms |
コンパイル使用メモリ | 78,768 KB |
実行使用メモリ | 7,552 KB |
最終ジャッジ日時 | 2025-01-19 23:17:44 |
合計ジャッジ時間 | 2,549 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 10 |
ソースコード
#include <iostream> #include <vector> using namespace std; vector<vector<int>> a = {{0,1,-1,0},{-1,0,0,1},{1,0,0,-1},{0,-1,1,0}}; vector<vector<int>> b = { {0,2,-1,0,-1,0,0,0}, {-2,0,0,1,0,1,0,0}, {1,0,0,-2,0,0,1,0}, {0,-1,2,0,0,0,0,-1}, {1,0,0,0,0,-2,1,0}, {0,-1,0,0,2,0,0,-1}, {0,0,-1,0,-1,0,0,2}, {0,0,0,1,0,1,-2,0}, }; vector<vector<int>> solve(int n){ if(n==2){ return a; }else if(n==3){ return b; }else{ vector<vector<int>> v = solve(n - 2); vector<vector<int>> ret(1<<n,vector<int>(1<<n)); int i,j,k; for(i=0;i<(1<<n);i+=v.size()){ for(j=0;j<v.size();j++){ for(k=0;k<v.size();k++) ret[i + j][i + k] = v[j][k]; } if(i==0){ for(j=0;j<v.size();j++){ ret[i + j][v.size() + j] = 1; ret[i + j][2*v.size() + j] = -1; } } if(i==v.size()){ for(j=0;j<v.size();j++){ ret[i + j][j] = -1; ret[i + j][3*v.size() + j] = 1; } } if(i==2*v.size()){ for(j=0;j<v.size();j++){ ret[i + j][j] = 1; ret[i + j][3*v.size() + j] = -1; } } if(i==3*v.size()){ for(j=0;j<v.size();j++){ ret[i + j][v.size() + j] = -1; ret[i + j][2*v.size() + j] = 1; } } } return ret; } } int main(){ int i,j,n; cin >> n; if(n==1){ cout << "No\n"; }else{ cout << "Yes\n"; vector<vector<int>> ans = solve(n); for(i=0;i<ans.size();i++){ for(j=0;j<ans.size();j++){ cout << ans[i][j] << " "; } cout << "\n"; } } }