Submission #243147

#TimeUsernameProblemLanguageResultExecution timeMemory
243147kartelBurza (COCI16_burza)C++14
160 / 160
69 ms3320 KiB
#include <bits/stdc++.h> //#include <ext/pb_ds/assoc_container.hpp> //#include <ext/pb_ds/tree_policy.hpp> #define in(x) freopen(x, "r", stdin) #define out(x) freopen(x, "w", stdout) #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") #pragma GCC optimize("-O3") #define F first #define S second #define pb push_back #define N +4005 #define M ll(1e9 + 7) #define sz(x) (int)x.size() #define re return #define oo ll(1e9) #define el '\n' #define pii pair <int, int> #define err ld(1e-9) #define last(x) x.back() #define all(x) (x).begin(), (x).end() #define arr_all(x, n) (x + 1), (x + 1 + n) using namespace std; //using namespace __gnu_pbds; //typedef tree <int, null_type, less_equal <int> , rb_tree_tag, tree_order_statistics_node_update> ordered_set; typedef long long ll; typedef long double ld; int dp[N], i, mask, tin[N], tout[N], tim, v, u, k, n; vector <int> g[N], vr[N]; void print(string ans) { cout << ans; exit(0); } void dfs(int v, int pr) { if (dp[v] == k - 1) { tin[v] = tim++; tout[v] = tim; return; } tin[v] = tim; for (auto u : g[v]) { if (u == pr) continue; dp[u] = dp[v] + 1; dfs(u, v); } tout[v] = tim; } bool calc() { char f[tim + 5][1 << (k + 1)]; f[0][0] = 1; for (i = 2; i <= n; i++) vr[tin[i]].pb(i); for (i = 0; i < tim; i++) { for (mask = 0; mask < (1 << k); mask++) { if (!f[i][mask]) continue; for (auto v : vr[i]) { if (!(mask & (1 << dp[v]))) f[tout[v]][mask | (1 << dp[v])] = 1; } } } int can = 0; for (mask = 0; mask < (1 << k); mask++) can |= f[tim][mask]; return can; } int main() { srand(time(0)); ios_base::sync_with_stdio(0); iostream::sync_with_stdio(0); ios::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); //in("input.txt"); //out("output.txt"); cin >> n >> k; if (k * k >= n) print("DA"); for (i = 1; i < n; i++) { cin >> u >> v; g[v].pb(u); g[u].pb(v); } dp[1] = -1; dfs(1, -1); print(calc() ? "DA" : "NE"); } // //00000 //00110 //00111 //00011 //00000
#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...