제출 #1171288

#제출 시각아이디문제언어결과실행 시간메모리
1171288ayush_agBurza (COCI16_burza)C++20
160 / 160
56 ms1552 KiB
#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<vector<int>>& cover,vector<vector<int>>& depth,vector<int>& mp,int leaf,int root,int d,int& cnt){ if(d<=k)depth[d].push_back(leaf); if(d==k){ mp[leaf]=cnt;cnt+=1; cover[leaf].push_back(mp[leaf]); return; } for(int i=0;i<edges[leaf].size();i++){ if(edges[leaf][i]==root)continue; dfs(edges,cover,depth,mp,edges[leaf][i],leaf,d+1,cnt); for(int j=0;j<cover[edges[leaf][i]].size();j++){ cover[leaf].push_back(cover[edges[leaf][i]][j]); } } } 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); } if(k>20){cout<<"DA\n";return 0;} vector<vector<int>> cover(n); vector<vector<int>> depth(k+1); vector<int> mp(n,0); int mx=1; dfs(edges,cover,depth,mp,0,-1,0,mx); //cout<<"dsf"<<"\n"; vector<pair<int,int>> interval(n,{-1,-1}); for(int i=0;i<n;i++){ if(cover[i].size()==0)continue; interval[i]={cover[i][0],cover[i][cover[i].size()-1]}; } // for(int i=0;i<n;i++){ // cout<<interval[i].first<<" "<<interval[i].second<<"\n"; // } int upto=1<<(k+1); vector<int> ss(upto); ss[0]=0;mx-=1; //cout<<mx<<" "<<upto<<endl; for(int i=2;i<upto;i++){ //cout<<i<<" dfs "<<endl; for(int j=1;j<=k;j++){ if((i & (1<<j))==0)continue; int prev= ss[i ^ (1<<j)]; //cout<<j<<endl; for(int l=0;l<depth[j].size();l++){ //cout<<depth[j][l]<<" df "; if(interval[depth[j][l]].first<=prev+1)ss[i]=max(ss[i],interval[depth[j][l]].second); } //cout<<endl; } //cout<<ss[i]<<"\n"; if(ss[i]==mx){cout<<"DA\n";return 0;} } cout<<"NE\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...