Submission #1178366

#TimeUsernameProblemLanguageResultExecution timeMemory
1178366zyadhanyBurza (COCI16_burza)C++20
0 / 160
937 ms589824 KiB
#include <bits/stdc++.h> #include <chrono> #include <random> #include <unordered_map> #include <unordered_set> #define ll long long #define vi vector<ll> #define vii vector<vi> #define pl pair<ll, ll> #define all(X) X.begin(),X.end() #define vp vector<pl> #define mi map<ll,ll> #define ld long double #define vc vector<char> #define vcc vector<vc> #define mc map<char,int> #define sortx(X) sort(X.begin(),X.end()); #define allr(X) X.rbegin(),X.rend() #define ln '\n' #define YES {cout << "YES\n"; return;} #define NO {cout << "NO\n"; return;} #define MUN {cout << "-1\n"; return;} using namespace std; const int MODE = 998244353; const int MXN = 410; int dpt[MXN] = {0}; void req(vii &adj, vector<set<ll>> &ST, ll n, ll p, ll lvl, ll k) { dpt[n] = lvl; if (lvl >= k) { ST[n].insert(n); return; } ll cnt = 0; for (auto neg : adj[n]) if (neg != p) { req(adj, ST, neg, n, lvl+1, k); ST[n].insert(all(ST[neg])); } } void solve(ll tc) { ll n, k; cin >> n >> k; vii adj(n + 1); for (int i = 0; i < n-1; i++) { ll u, v; cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); } if (k * k >= n) { cout << "DA\n"; return; } vector<set<ll>> ST(n + 1); req(adj, ST, 1, 0, 0, k); vector<set<ll>> st; for (int i = 1; i <= n; i++) { if (dpt[i] == 1 && !ST[i].empty()) st.push_back(ST[i]); } for (int lvl = 2; lvl <= k; lvl++) { vector<set<ll>> st2(all(st)); for (int i = 1; i <= n; i++) { if (dpt[i] != lvl || ST[i].empty()) continue; for (auto &s : st) { if (s.count(*ST[i].begin())) continue; set<ll> tmp(all(s)); tmp.insert(all(ST[i])); st2.push_back(tmp); } } swap(st, st2); st.erase(unique(st.begin(), st.end()), st.end()); } for (auto &s : st) { if (s.size() == ST[1].size()) { cout << "DA\n"; return; } } cout << "NE\n"; } int32_t main() { ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr); int size = 1; // freopen("disrupt.in", "r", stdin ); // freopen("disrupt.out", "w", stdout); // cin >> size; for (int tc = 1; tc <= size; tc++){ solve(tc); // if (tc != size) cout << '\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...