Submission #885273

#TimeUsernameProblemLanguageResultExecution timeMemory
885273parlimoosBurza (COCI16_burza)C++14
0 / 160
124 ms1368 KiB
//Be Name KHODA
#pragma GCC optimize("Ofast")
#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef long double ld;
#define pb push_back
#define pp pop_back
#define lb lower_bound
#define ub upper_bound
#define cl clear
#define bg begin
#define arr(x) array<int , x>
#define endl '\n'

int n , k;
vector<int> tr[400];
int dp[400][401];

void f(int v = 0 , int p = -1 , int lm = k){
    for(int u : tr[v]){
        if(u != p){
            f(u , v , lm);
            if(lm > 0) f(u , v , lm - 1);
        }
    }
    if(v != 0 and (int)tr[v].size() == 1) dp[v][lm] = 0;
    if(lm == 0){
        dp[v][lm] = -1;
        for(int u : tr[v]){
            if(u != p){
                dp[v][lm] = max(dp[v][lm] , dp[u][lm]);
            }
        }
        dp[v][lm]++;
    }else if((v == 0 and (int)tr[v].size() == 1) or (v != 0 and (int)tr[v].size() == 2)){
        dp[v][lm] = 0;
    }else{
        int mxs[2] = {-1 , -1};
        for(int u : tr[v]){
            if(u != p){
                if(mxs[0] == -1 or mxs[0] < dp[u][lm - 1]){
                    mxs[1] = mxs[0];
                    mxs[0] = dp[u][lm - 1];
                }else if(mxs[1] == -1 or mxs[1] < dp[u][lm - 1]){
                    mxs[1] = dp[u][lm - 1];
                }
            }
        }
        int res1 = mxs[1];
        int res2 = -1;
        for(int u : tr[v]){
            if(u != p){
                res2 = max(res2 , dp[u][lm]);
            }
        }
        dp[v][lm] = min(res1 , res2) + 1;
    }
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    cin >> n >> k;
    for(int i = 1 ; i < n ; i++){
        int v , u;
        cin >> v >> u;
        v-- , u--;
        tr[v].pb(u) , tr[u].pb(v);
    }
    f();
    if(dp[0][k] >= k) cout << "NE";
    else cout << "DA";
}
#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...