Submission #23347

#TimeUsernameProblemLanguageResultExecution timeMemory
23347NurlykhanBeads and wires (APIO14_beads)C++14
0 / 100
3 ms384 KiB
#include <bits/stdc++.h> #define pii pair<int, int> #define f first #define s second #define pb push_back #define mp make_pair #define ll long long #define ld long double #define sz(v) int(v.size()) #define all(v) v.begin(), v.end() using namespace std; const int N = (int) 2e5 + 7; const int M = (int) 2e6 + 7; const ll LINF = (ll) 1e16; const int INF = (int) 1e9 + 7; const double EPS = (double) 1e-9; int n; struct edge { int a, b, c; edge() {} }; edge a[N]; ll dp[N]; bool ok(int mask, edge x, edge y) { if (x.a == y.a || x.a == y.b) { bool bad = 0; for (int i = 0; i < n - 1; i++) { if ((mask >> i) % 2 && (a[i].a == x.a || a[i].b == x.a)) { bad = 1; } } if (!bad) return true; } if (x.b == y.a || x.b == y.b) { bool bad = 0; for (int i = 0; i < n - 1; i++) { if ((mask >> i) % 2 && (a[i].a == x.b || a[i].b == x.b)) { bad = 1; } } if (!bad) return true; } return false; } int main() { #define fn "balls" #ifdef witch freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #else // freopen(fn".in", "r", stdin); // freopen(fn".out", "w", stdout); #endif cin >> n; map<pii, bool> was; for (int i = 0; i < n - 1; i++) { cin >> a[i].a >> a[i].b >> a[i].c; if (a[i].a > a[i].b) swap(a[i].a, a[i].b); assert(!was[mp(a[i].a, a[i].b)]); was[mp(a[i].a,a[i].b)]=1; } for (int mask = 0; mask < (1 << (n - 1)); mask++) { dp[mask] = -LINF; } dp[0] = 0; for (int mask = 0; mask < (1 << (n - 1)); mask++) { for (int i = 0; i < n - 1; i++) { if ((mask >> i) % 2) continue; dp[mask | (1 << i)] = max(dp[mask | (1 << i)], dp[mask]); for (int j = 0; j < n - 1; j++) { if ((mask >> j) % 2 || i == j) continue; if (ok(mask, a[i], a[j])) { ll &tmp = dp[mask | (1 << i) | (1 << j)]; tmp = max(tmp, dp[mask] + a[i].c + a[j].c); } } } } cout << dp[(1 << (n - 1)) - 1]; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...