#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define all(x) x.begin(), x.end()
#define L(i, b, e) for (int i = b; i < e; ++i)
#define R(i, b, e) for (int i = b; i >= e; --i)
#define pb emplace_back
#define vi vector<int>
#define sz(x) ((int) x.size())
const int N = 400 + 7, Mx = 1e9 + 9;
int n, k;
vi g[N];
int dp[N];
void dfs(int x, int par, int dep){
if (dep == k){
dp[x] = Mx;
return;
}
vi a;
for (auto &i : g[x]){
if (i != par){
dfs(i, x,dep + 1);
a.pb(dp[i]);
}
}
sort(all(a));
if (a.empty()){
dp[x] = 0;
return;
}
int lo = 0, hi = sz(g[x]);
while (lo <= hi){
int mid = lo + (hi - lo) / 2;
bool y = (mid + 1 >= a.back());
L(i, 0, mid){
if ((i + 1) >= sz(a) || a[sz(a) - i - 2] <= (mid - i))y = true;
}
if (y){
dp[x] = mid;
hi = mid - 1;
}else{
lo = mid + 1;
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> k;
L(i, 0, n - 1){
int u, v;
cin >> u >> v;
--u; --v;
g[u].pb(v);
g[v].pb(u);
}
dfs(0, -1, 0);
cout << (dp[0] <= 1 ? "DA" : "NE");
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |