Submission #166854

#TimeUsernameProblemLanguageResultExecution timeMemory
166854Atill83Burza (COCI16_burza)C++14
160 / 160
398 ms37356 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define endl '\n' using namespace std; const long long INF = (long long) 1e18; const int mod = (int) 1e9+7; const int MAXN = (int) 3000; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; typedef pair<ll,ll> pll; ll n, k; vector<int> adj[MAXN]; int dep[MAXN]; int gir[MAXN]; int cik[MAXN]; int yapraksayi = 0; bool dp[405][(1<<20)]; vector<int> q[MAXN]; void dfs(int a, int par){ if(par != -1) dep[a] = dep[par] + 1; if(dep[a] == k){ gir[a] = yapraksayi; cik[a] = yapraksayi; yapraksayi++; return; } gir[a] = yapraksayi; for(int i: adj[a]){ if(i != par) dfs(i, a); } cik[a] = yapraksayi - 1; } bool do_it(){ for(int i = 2; i <= n; i++){ if(!dep[i]) continue; dep[i]--; q[gir[i]].push_back(i); //cout<<gir[i]<<endl; //cout<<dep[i]<<endl; } //return 0; dp[0][0] = 1; for(int i = 0; i < yapraksayi; i++){ for(int j = 0; j < (1<<20); j++){ if(!dp[i][j]) continue; for(int k: q[i]){ if(((j>>dep[k]) & 1) == 0){ dp[cik[k] + 1][j | (1<<dep[k])] = 1; //cout<<cik[k] + 1<<endl; } } } } for(int i = 0; i < (1<<20); i++){ if(dp[yapraksayi][i]) return 1; } return 0; } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr);cout.tie(nullptr); #ifdef Local freopen("../IO/int.txt","r",stdin); freopen("../IO/out.txt","w",stdout); #endif cin>>n>>k; if(k*(k + 1) >= 2*n){ cout<<"DA"<<endl; return 0; } for(int i = 0; i < n - 1; i++){ int a, b; cin>>a>>b; adj[a].push_back(b); adj[b].push_back(a); } dep[1] = 0; dfs(1, -1); cout<<(do_it() ? "DA" : "NE")<<endl; #ifdef Local cout<<endl<<fixed<<setprecision(2)<<1000.0 * clock() / CLOCKS_PER_SEC<< " milliseconds "; #endif }
#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...