제출 #1149653

#제출 시각아이디문제언어결과실행 시간메모리
1149653DON_FBurza (COCI16_burza)C++20
0 / 160
0 ms328 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; #define all(x) x.begin(), x.end() #define L(i, b, e) for (int i = b; i < e; ++i) #define R(i, b, e) for (int i = b; i >= e; --i) #define pb emplace_back #define vi vector<int> #define sz(x) ((int) x.size()) const int N = 400 + 7, Mx = 1e9 + 9; int n, k; vi g[N]; int dp[N]; void dfs(int x, int par, int dep){ if (dep == k){ dp[x] = Mx; return; } vi a; for (auto &i : g[x]){ if (i != par){ dfs(i, x,dep + 1); a.pb(dp[i]); } } sort(all(a)); if (a.empty()){ dp[x] = 0; return; } int lo = 0, hi = sz(g[x]); while (lo <= hi){ int mid = lo + (hi - lo) / 2; bool y = (mid + 1 >= a.back()); L(i, 0, mid){ if ((i + 1) >= sz(a) || a[sz(a) - i - 2] <= (mid - i))y = true; } if (y){ dp[x] = mid; hi = mid - 1; }else{ lo = mid + 1; } } } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> k; L(i, 0, n - 1){ int u, v; cin >> u >> v; --u; --v; g[u].pb(v); g[v].pb(u); } dfs(0, -1, 0); cout << (dp[0] <= 1 ? "DA" : "NE"); }
#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...