# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
537224 | Leonardo_Paes | Beads and wires (APIO14_beads) | C++17 | 1 ms | 468 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
#define f first
#define s second
const int maxn = 1e4+10, inf = 0x3f3f3f3f;
vector<pii> grafo[maxn];
int dp[maxn][2];
// edg + dp[id][0] - dp[id][1];
void solve(int u, int p = 0, int e = -1){
int sum = 0, sons = 0;
int mx[2] = {-inf, -inf};
for(pii vv : grafo[u]){
int v = vv.f, w = vv.s;
if(v == p) continue;
sons++;
solve(v, u, w);
int aux = w + dp[v][0] - dp[v][1];
mx[1] = max(mx[1], aux);
if(mx[0] < mx[1]) swap(mx[0], mx[1]);
sum += dp[v][1];
}
if(sons >= 2) dp[u][0] = sum + mx[0] + mx[1];
else dp[u][0] = max(dp[grafo[u][0].f][0], dp[grafo[u][0].f][1]);
if(e != -1 and mx[0] != -inf) dp[u][1] = e + sum + mx[0];
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |