Submission #667306

# Submission time Handle Problem Language Result Execution time Memory
667306 2022-12-01T05:33:03 Z radal Fireworks (APIO16_fireworks) C++17
0 / 100
15 ms 2680 KB
#include <bits/stdc++.h>
#pragma GCC target("sse,sse2,avx2")
#pragma GCC optimize("unroll-loops,O2")
#define rep(i,l,r) for (int i = l; i < r; i++)
#define repr(i,r,l) for (int i = r; i >= l; i--)
#define X first
#define Y second
#define all(x) (x).begin() , (x).end()
#define pb push_back
#define endl '\n'
#define debug(x) cerr << #x << " : " << x << endl;
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pll;
constexpr int N = 1e5+15,mod = 1e9+7;
constexpr ll inf = 1e18+10;
inline int mkay(int a,int b){
    if (a+b >= mod) return a+b-mod;
   // if (a+b < 0) return a+b+mod;
    return a+b;
}

inline int poww(int a,int k){
    if (k < 0) return 0;
    int z = 1;
    while (k){
        if (k&1) z = 1ll*z*a%mod;
        a = 1ll*a*a%mod;
        k >>= 1;
    } 
    return z; 
}

vector<pll> adj[N];
ll h[N],val[N][2];
int n,m;
ll x,ans;

void pre(int v){
	if (v > n) val[v][0] = val[v][1] = h[v];
	else{
		val[v][1] = -inf;
		val[v][0] = inf;
	}
	for (pll p : adj[v]){
		int u = p.X;
		h[u] = h[v]+p.Y;
		pre(u);
		val[v][1] = max(val[v][1],val[u][1]);
		val[v][0] = min(val[v][0],val[u][0]);
	}
}

void dfs(int v,ll tmp){
	for (pll p : adj[v]){
		int u = p.X;
		ll calc = 0;
		if (val[u][0]+tmp > x){
			if (p.Y < val[u][0]+tmp-x)
				calc = -p.Y;
			else
				calc = x-tmp-val[u][0];
			ans -= calc;
			tmp += calc;
		}
		else if (val[u][1]+tmp < x){
			calc = x-val[u][1]-tmp;
			ans += calc;
			tmp += calc;
		}
		dfs(u,tmp);
		tmp -= calc;
	}
}

int main(){
	ios :: sync_with_stdio(0); cin.tie(0);
	cin >> n >> m;
	rep(i,2,n+m+1){
		int p,w;
		cin >> p >> w;
		adj[p].pb({i,w});
	}
	pre(1);
	ll out = inf;
	rep(i,0,90001){
		x = i;
		ans = 0;
		dfs(1,0);
		out = min(ans,out);
	}
	cout << out;
}
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 2680 KB Output is correct
2 Incorrect 15 ms 2680 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -