結果
問題 |
No.2991 Hypercubic Graph Flow
|
ユーザー |
![]() |
提出日時 | 2024-12-16 09:10:56 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,027 bytes |
コンパイル時間 | 3,917 ms |
コンパイル使用メモリ | 250,676 KB |
実行使用メモリ | 8,320 KB |
最終ジャッジ日時 | 2024-12-16 09:11:02 |
合計ジャッジ時間 | 5,964 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 7 WA * 3 |
ソースコード
#include<bits/stdc++.h> using namespace std; #define rep(i,n) for(int i=0;i<(int)(n);i++) #define ALL(v) v.begin(),v.end() typedef long long ll; template <class T> using V=vector<T>; template <class T> using VV=V<V<T>>; int main(){ ios::sync_with_stdio(false); std::cin.tie(nullptr); auto f=[&](auto f,int n)->VV<int>{ if(n==1){ VV<int> A(2,V<int>(2)); A[0][1]=3,A[1][0]=3; return A; } auto B=f(f,n-1); int N=(1<<n); VV<int> C(N,V<int>(N)); rep(i,N/2) rep(j,N/2){ C[i][j]=B[i][j]; C[i+N/2][j+N/2]=B[i][j]; } rep(i,N/2) C[i][i+N/2]=3; for(int i=N/2;i<N;i++) C[i][i-N/2]=3; return C; }; int n; cin>>n; if(n==1){ cout<<"No\n"; return 0; } auto A=f(f,n); int N=(1<<n); if(n%2==0){ int now=1; rep(i,N/2) rep(j,N/2){ if(A[i][j]==3){ A[i][j]=now; A[j][i]=-now; now*=-1; A[i+N/2][j+N/2]=-A[i][j]; } else if(A[i][j]!=0){ now=A[i][j]; now*=-1; A[i+N/2][j+N/2]=-A[i][j]; } } rep(i,N/2){ int cnt=0; rep(j,N){ if(j<N/2) cnt+=A[i][j]; if(j>=N/2 && A[i][j]==3){ A[i][j]=-cnt; A[j][i]=cnt; } } } } else{ int now=1; rep(i,N/2){ int cnt=0; rep(j,N/2){ if(A[i][j]==3){ cnt++; if(cnt==n-1) now*=-1; A[i][j]=now; A[j][i]=-now; now*=-1; A[i+N/2][j+N/2]=-A[i][j]; } else if(A[i][j]!=0){ cnt++; if(cnt==n-1) now*=-1; now=A[i][j]; now*=-1; A[i+N/2][j+N/2]=-A[i][j]; } } } rep(i,N/2){ int cnt=0; rep(j,N){ if(j<N/2) cnt+=A[i][j]; if(j>=N/2 && A[i][j]==3){ A[i][j]=-cnt; A[j][i]=cnt; } } } } cout<<"Yes\n"; rep(i,N){ rep(j,N){ if(j) cout<<" "; cout<<A[i][j]; } cout<<'\n'; } return 0; }