Submission #591423

#TimeUsernameProblemLanguageResultExecution timeMemory
591423MazaalaiBurza (COCI16_burza)C++17
0 / 160
14 ms4492 KiB
#include <bits/stdc++.h> #define pb push_back #define ff first #define ss second #define chmin(a,b) a=min(a,b) #define chmax(a,b) a=max(a,b) using namespace std; using VI = vector <int>; using PII = pair <int, int>; const int N = 401; const int K = 21; const int M = 1<<20; VI paths[N]; int dp[M], reach[K][N]; int n, m, k, leaf; string yes = "DA"; string no = "NE"; PII dfs(int pos, int lvl = -1, int par = -1) { int l = n, r = -1; if (lvl == k-1) { l = r = leaf++; chmax(reach[lvl][l], r); // cout << pos << "," << lvl << ": " << l << "," << r << '\n'; return {l, r}; } for (auto el : paths[pos]) { if (el == par) continue; PII tmp = dfs(el, lvl+1, pos); chmin(l, tmp.ff); chmax(r, tmp.ss); } if (l == n) chmax(reach[lvl][l], r); // cout << pos << "," << lvl << ": " << l << "," << r << '\n'; return {l, r}; } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); // freopen("0.in", "r", stdin); // freopen("0.out", "w", stdout); cin >> n >> k; for (int i = 1; i < n; i++) { int a, b; cin >> a >> b; paths[a].pb(b); paths[b].pb(a); } if (k*k >= n) { cout << yes << "\n"; return 0; } memset(reach, -1, sizeof(reach)); n = dfs(1).ss; for (int i = 0; i < k; i++) for (int j = 1; j <= n; j++) chmax(reach[i][j], reach[i][j-1]); memset(dp, -1, sizeof(dp)); dp[0] = 0; // cout << n << "\n"; for (int i = 0; i < (1<<k); i++) { dp[i] = 0; // cout << "------------------\n"; // cout << i << "\n"; for (int j = 0; j < k; j++) { int prev = i ^ (1<<j); if (prev > i) continue; // cout << j << " " << dp[prev] << ": " << reach[j][dp[prev]]+1 << "\n"; chmax(dp[i], reach[j][dp[prev]]+1); } // cout << i << ": " << dp[i]-1 << '\n'; if (dp[i] > n) { cout << yes << '\n'; return 0; } } cout << no << "\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...