제출 #1010096

#제출 시각아이디문제언어결과실행 시간메모리
1010096vjudge1Burza (COCI16_burza)C++17
160 / 160
18 ms1204 KiB
#include<bits/stdc++.h> using namespace std; vector<int>adj[401]; vector<pair<int,int>>go[401]; int in[401],out[401],par[401],dep[401],ok[401],C,k; bitset<1<<19>dp[401]; void dfs(int n){ for(auto i:adj[n]) if(i-par[n]) par[i]=n,dep[i]=dep[n]+1,dfs(i); } void dfs2(int n){ in[n]=C; if(dep[n]==k){ out[n]=++C; return; } for(auto i:adj[n]) if(i-par[n]&&ok[i]) dfs2(i); out[n]=C; } int main(){ int n; cin>>n>>k; if(k>19)return puts("DA"),0; for(int i=1;i<n;i++){ int a,b; cin>>a>>b; adj[a].push_back(b); adj[b].push_back(a); } dfs(1); for(int i=1,j;i<=n;i++) if(dep[j=i]==k) do ok[j]=1; while(j=par[j]); dfs2(1); for(int i=2;i<=n;i++)if(ok[i]) go[in[i]].push_back({out[i],dep[i]-1}); dp[0][0]=1; for(int i=0;i<C;i++) for(int j=0;j<1<<k;j++) if(dp[i][j]) for(auto[m,d]:go[i]) if(~j&1<<d) dp[m][j|1<<d]=1; puts(dp[C].count()?"DA":"NE"); }

컴파일 시 표준 에러 (stderr) 메시지

burza.cpp: In function 'int main()':
burza.cpp:35:20: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   35 |             while(j=par[j]);
      |                   ~^~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...