Submission #98529

#TimeUsernameProblemLanguageResultExecution timeMemory
98529dalgerokBurza (COCI16_burza)C++17
0 / 160
70 ms1264 KiB
#include<bits/stdc++.h> using namespace std; const int M = 405, N = 20; int n, k, d[M]; int tin[M], tout[M], timer; vector < int > g[M], q[M]; bitset < (1 << N) > dp[M]; void dfs(int v, int pr = -1){ if(d[v] == k){ tin[v] = timer++; tout[v] = timer; return; } tin[v] = timer; for(int to : g[v]){ if(to != pr){ d[to] = d[v] + 1; dfs(to, v); } } tout[v] = timer; } int main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin >> n >> k; if(k * k >= n){ return cout << "DA", 0; } for(int i = 1; i < n; i++){ int x, y; cin >> x >> y; x -= 1; y -= 1; g[x].push_back(y); g[y].push_back(x); } dfs(0); for(int i = 0; i < n; i++){ q[tin[i]].push_back(i); } dp[0][0] = true; for(int i = 0; i < timer; i++){ for(int j = 0; j < (1 << k); j++){ if(dp[i][j] == true){ for(auto it : q[i]){ if(!((j >> d[it]) & 1)){ dp[tout[it]][j | (1 << d[it])] = true; } } } } } for(int i = 0; i < (1 << k); i++){ if(dp[timer][i] == true){ return cout << "DA", 0; } } cout << "NE"; }
#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...