#include <bits/stdc++.h>
using namespace std;
int n, k;
vector<int> intervalL;
vector<int> intervalR;
vector<int> depth;
vector<vector<int>> adjList;
vector<vector<int>> check;
int track = 0;
void dfs(int node, int parent){
if (depth[node] == k){
intervalL[node] = track;
intervalR[node] = track;
track++;
}
else{
for (int child : adjList[node]){
if (child == parent) continue;
depth[child] = depth[node]+1;
dfs(child, node);
intervalL[node] = min(intervalL[child], intervalL[node]);
intervalR[node] = max(intervalR[child], intervalR[node]);
}
}
if (node != 0 and intervalR[node] != -1){
check[intervalR[node]].push_back(node);
}
}
int main(){
cin >> n >> k;
adjList.resize(n);
depth.resize(n);
intervalL.resize(n);
intervalR.resize(n);
check.resize(n);
depth[0] = 0;
fill(intervalL.begin(), intervalL.end(), 1000000007);
fill(intervalR.begin(), intervalR.end(), -1);
for (int i = 0; i < n-1; i++){
int a, b;
cin >> a >> b;
adjList[a-1].push_back(b-1);
adjList[b-1].push_back(a-1);
}
if (k*k >= n){
cout<<"DA";
return 0;
}
dfs(0, 0);
bool valid = false;
//dp[i][j] - can we use only nodes of depths in subset i such
//that we cannot get to the first j(0 index) nodes at depth K
bool dp[(1<<k)][track];
memset(dp, false, sizeof(dp));
for (int i = 1; i < (1<<k); i++){
//can we fill interval [1, j]
for (int j = 0; j < track; j++){
//go through all points going to j
for (int node : check[j]){
//make sure depth is in subset
if ((i&(1<<depth[node]-1)) != 0){
dp[i][j] = dp[i][j] or (dp[i^(1<<depth[node]-1)][intervalL[node]]);
}
}
}
if (dp[i][track-1])
valid = true;
}
if (valid)
cout<<"DA";
else
cout<<"NE";
}
Compilation message
burza.cpp: In function 'int main()':
burza.cpp:68:39: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
68 | if ((i&(1<<depth[node]-1)) != 0){
burza.cpp:69:65: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
69 | dp[i][j] = dp[i][j] or (dp[i^(1<<depth[node]-1)][intervalL[node]]);
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
16 ms |
1740 KB |
Output is correct |
2 |
Correct |
145 ms |
12236 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Incorrect |
1 ms |
332 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
136 ms |
10704 KB |
Output is correct |
2 |
Correct |
138 ms |
10316 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Incorrect |
138 ms |
10444 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
149 ms |
10564 KB |
Output is correct |
2 |
Correct |
137 ms |
10696 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Incorrect |
2 ms |
332 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
40 ms |
4300 KB |
Output is correct |
2 |
Correct |
146 ms |
12620 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Incorrect |
1 ms |
332 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
131 ms |
9036 KB |
Output is correct |
2 |
Correct |
140 ms |
10072 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Incorrect |
1 ms |
332 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
140 ms |
11212 KB |
Output is correct |
2 |
Correct |
129 ms |
9804 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
296 KB |
Output is correct |
5 |
Incorrect |
1 ms |
396 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
158 ms |
10828 KB |
Output is correct |
2 |
Correct |
135 ms |
10188 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Incorrect |
143 ms |
9548 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
33 ms |
3148 KB |
Output is correct |
2 |
Correct |
148 ms |
11668 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Incorrect |
1 ms |
332 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
14 ms |
1356 KB |
Output is correct |
2 |
Correct |
140 ms |
11728 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
292 KB |
Output is correct |
5 |
Incorrect |
1 ms |
204 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
62 ms |
4176 KB |
Output is correct |
2 |
Correct |
144 ms |
11868 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Incorrect |
63 ms |
4428 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |