Submission #229260

#TimeUsernameProblemLanguageResultExecution timeMemory
229260MetBBurza (COCI16_burza)C++14
160 / 160
213 ms25208 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; #define N 1000003 using namespace std; typedef long long ll; typedef unsigned long long ull; const ll INF = 1e18, MOD = 1e9 + 7, MOD2 = 1e6 + 3; int n, k, ptr; bitset <1 << 21> d[401]; vector <int> g[N]; vector < pair <int, int> > v[401]; void dfs (int x, int p, int h) { if (h == k) { v[++ptr].push_back ({ptr, h - 1}); return; } int l = ptr + 1; for (int to : g[x]) if (to != p) dfs (to, x, h + 1); int r = ptr; if (h && l) v[r].push_back ({l, h - 1}); } int main () { cin >> n >> k; for (int i = 0; i < n - 1; i++) { int a, b; cin >> a >> b; a--, b--; g[a].push_back (b); g[b].push_back (a); } if (k * k >= n) { cout << "DA"; return 0; } dfs (0, -1, 0); d[0][0] = 1; for (int i = 1; i <= ptr; i++) { for (int j = 1; j < (1 << k); j++) { for (auto a : v[i]) { if (j & (1 << a.second)) { d[i][j] = (d[i][j] | d[a.first - 1][j - (1 << a.second)]); } } if (ptr == i && d[i][j]) { cout << "DA"; return 0; } } } cout << "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...