This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
vector<int>adj[401];
vector<pair<int,int>>go[401];
int in[401],out[401],par[401],dep[401],ok[401],C,k;
bitset<1<<19>dp[401];
void dfs(int n){
for(auto i:adj[n]) if(i-par[n])
par[i]=n,dep[i]=dep[n]+1,dfs(i);
}
void dfs2(int n){
in[n]=C;
if(dep[n]==k){
out[n]=++C;
return;
}
for(auto i:adj[n])
if(i-par[n]&&ok[i])
dfs2(i);
out[n]=C;
}
int main(){
int n;
cin>>n>>k;
if(k>19)return puts("DA"),0;
for(int i=1;i<n;i++){
int a,b; cin>>a>>b;
adj[a].push_back(b);
adj[b].push_back(a);
}
dfs(1);
for(int i=1,j;i<=n;i++)
if(dep[j=i]==k)
do ok[j]=1;
while(j=par[j]);
dfs2(1);
for(int i=2;i<=n;i++)if(ok[i])
go[in[i]].push_back({out[i],dep[i]-1});
dp[0][0]=1;
for(int i=0;i<C;i++) for(int j=0;j<1<<k;j++)
if(dp[i][j]) for(auto[m,d]:go[i])
if(~j&1<<d) dp[m][j|1<<d]=1;
puts(dp[C].count()?"DA":"NE");
}
Compilation message (stderr)
burza.cpp: In function 'int main()':
burza.cpp:35:20: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
35 | while(j=par[j]);
| ~^~~~~~~
# | 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... |