#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));
dp[0][0] = true;
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]-1]);
}
}
}
if (dp[i][track-1])
valid = true;
}
if (valid)
cout<<"DA";
else
cout<<"NE";
}
Compilation message
burza.cpp: In function 'int main()':
burza.cpp:69:39: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
69 | if ((i&(1<<depth[node]-1)) != 0){
burza.cpp:70:65: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
70 | dp[i][j] = dp[i][j] or (dp[i^(1<<depth[node]-1)][intervalL[node]-1]);
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
17 ms |
1740 KB |
Output is correct |
2 |
Correct |
157 ms |
12236 KB |
Output is correct |
3 |
Correct |
1 ms |
204 KB |
Output is correct |
4 |
Correct |
1 ms |
204 KB |
Output is correct |
5 |
Incorrect |
1 ms |
332 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
147 ms |
10700 KB |
Output is correct |
2 |
Correct |
150 ms |
10312 KB |
Output is correct |
3 |
Correct |
1 ms |
204 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Incorrect |
144 ms |
10444 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
154 ms |
10572 KB |
Output is correct |
2 |
Correct |
143 ms |
10572 KB |
Output is correct |
3 |
Correct |
1 ms |
204 KB |
Output is correct |
4 |
Correct |
1 ms |
204 KB |
Output is correct |
5 |
Correct |
1 ms |
332 KB |
Output is correct |
6 |
Incorrect |
1 ms |
204 KB |
Output isn't correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
41 ms |
4172 KB |
Output is correct |
2 |
Incorrect |
157 ms |
12620 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
142 ms |
9036 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
142 ms |
11332 KB |
Output is correct |
2 |
Correct |
152 ms |
9804 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 |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
178 ms |
10828 KB |
Output is correct |
2 |
Correct |
141 ms |
10180 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Incorrect |
153 ms |
9556 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
34 ms |
3152 KB |
Output is correct |
2 |
Correct |
188 ms |
11596 KB |
Output is correct |
3 |
Correct |
1 ms |
204 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Incorrect |
1 ms |
204 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
19 ms |
1432 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
63 ms |
4172 KB |
Output is correct |
2 |
Correct |
154 ms |
11856 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
268 KB |
Output is correct |
5 |
Incorrect |
64 ms |
4428 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |