Submission #1220413

#TimeUsernameProblemLanguageResultExecution timeMemory
1220413vaneaBurza (COCI16_burza)C++20
160 / 160
29 ms840 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int mxN = 4e2+10; int k; vector<int> adj[mxN]; vector<int> leaves[mxN]; vector<int> nodes[mxN]; int idx[mxN]; map<int, int> lost; array<int, 2> intervals[mxN]; void dfs(int node, int p, int dep) { nodes[dep].push_back(node); if(dep == k) { lost[node] = lost.size(); leaves[node] = {lost[node]}; return ; } for(auto it : adj[node]) { if(it == p) continue; dfs(it, node, dep+1); leaves[node].insert(leaves[node].end(), leaves[it].begin(), leaves[it].end()); } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n >> k; for(int i = 1; i < n; i++) { int a, b; cin >> a >> b; --a; --b; adj[a].push_back(b); adj[b].push_back(a); } if(k * k >= n) { cout << "DA"; return 0; } dfs(0, 0, 0); for(int i = 0; i < n; i++) { vector<int> &cc = leaves[i]; if(cc.empty()) intervals[i] = {-1, -1}; else intervals[i] = {cc.front()+1, cc.back()+1}; } vector<int> dp(1 << k); for(int mask = 1; mask < (1 << k); mask++) { int &curr = dp[mask]; for(int dep = 0; dep < k; dep++) { if(mask & (1 << dep)) { int last = dp[mask ^ (1 << dep)]; for(auto it : nodes[dep+1]) { if(intervals[it][0] <= last+1) { curr = max(curr, intervals[it][1]); } } } } if(dp[mask] == lost.size()) { cout << "DA"; return 0; } } cout << "NE"; return 0; }
#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...