#include <bits/stdc++.h>
using namespace std;
void fastio(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
}
int n,k;
void dfs(vector<vector<int>>& edges,vector<int>& dp,int leaf,int root,int d){
if(d==k){dp[leaf]=2;return;}
for(int i=0;i<edges[leaf].size();i++){
if(edges[leaf][i]==root)continue;
dfs(edges,dp,edges[leaf][i],leaf,d+1);
}
int cnt=0;
for(int i=0;i<edges[leaf].size();i++){
if(edges[leaf][i]==root)continue;
if(dp[edges[leaf][i]]==1 && cnt==0)cnt=1;
else if(dp[edges[leaf][i]]==2)cnt+=dp[edges[leaf][i]];
}
if(cnt<4)dp[leaf]=1;
else if(cnt==4)dp[leaf]=2;
}
int32_t main() {
cin>>n>>k;
vector<vector<int>> edges(n);
for(int i=0;i<n-1;i++){
int a,b;cin>>a>>b;
a-=1;b-=1;
edges[a].push_back(b);
edges[b].push_back(a);
}
vector<int> dp(n,0);
dfs(edges,dp,0,-1,0);
//for(int i=0;i<n;i++)cout<<dp[i]<<" ";
//cout<<"\n";
if(dp[0])cout<<"DA\n";
else cout<<"NE\n";
}
# | 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... |