#include <bits/stdc++.h>
#define f first
#define s second
using namespace std;
using ll = long long;
using P = pair<ll, ll>;
vector<vector<int>> adj;
vector<int> st;
void dfs(int nd, int pr) {
if (adj[nd].size() == 1) {
st[nd] = 0;
return;
}
if (adj[nd].size() == 2 && nd != 0) {
st[nd] = 0;
return;
}
vector<int> c;
for (int x: adj[nd]) {
if (x != pr) {
dfs(x, nd);
c.push_back(st[x]);
}
}
int m1 = 0;
int m2 = 0;
for (int x: c) {
if (x > m1) {
m2 = m1;
m1 = x;
} else if (x > m2) {
m2 = x;
}
}
st[nd] = m2+1;
}
int main() {
int n, k; cin >> n >> k;
adj.resize(n);
st.resize(n);
for (int i = 0; i < n-1; i++) {
int a, b; cin >> a >> b; --a; --b;
adj[a].push_back(b);
adj[b].push_back(a);
}
dfs(0, 0);
if (st[0]+1 <= k) {
cout << "DA";
} else {
cout << "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... |