제출 #256740

#제출 시각아이디문제언어결과실행 시간메모리
256740AM1648Fireworks (APIO16_fireworks)C++17
7 / 100
8 ms7424 KiB
/* be name khoda */
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<ll, ll> pii;

#define forifrom(i, s, n) for (ll i = s; i < n; ++i)
#define fori(i, n) forifrom(i, 0, n)

#define F first
#define S second

// ------------------------------------------------------------------

const ll maxn = 300010;

ll n, m, ans;
vector<pii> subt[maxn];
ll A[maxn * 2];
pii B[maxn];

void dfs(ll x) {
    for (auto [y, w] : subt[x]) {
        dfs(y);
    }
    ll i = 0;
    for (auto [y, w] : subt[x]) {
        A[i * 2] = B[y].F + w;
        A[i * 2 + 1] = B[y].S + w;
        ++i;
    }
    if (!i) return;
    sort(A, A + i * 2);
    for (auto [y, w] : subt[x]) {
        ans += max(0LL, B[y].F + w - A[i]);
        ans += max(0LL, A[i] - B[y].S - w);
    }
    B[x] = {A[i - 1], A[i]};
}

int main() {
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    
    cin >> n >> m;
    n += m;
    fori (i, n - 1) {
        ll p, w; cin >> p >> w; --p;
        subt[p].emplace_back(i + 1, w);
    }
    dfs(0);
    cout << ans << '\n';

}

컴파일 시 표준 에러 (stderr) 메시지

fireworks.cpp: In function 'void dfs(ll)':
fireworks.cpp:24:20: warning: unused variable 'w' [-Wunused-variable]
     for (auto [y, w] : subt[x]) {
                    ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...