제출 #1367248

#제출 시각아이디문제언어결과실행 시간메모리
1367248aaaaaaaa트리 (IOI24_tree)C++20
0 / 100
2096 ms24800 KiB
#include <bits/stdc++.h>
#include "tree.h"

using namespace std;

const int mxN = 2e5 + 100;

vector <int> adj[mxN];
int w[mxN];

pair <long long, long long> dfs (int u, int par, int l, int r) {
    long long ans = 0, csm = 0;
    for (auto v : adj[u]) {
        if (v ^ par) {
            auto x = dfs (v, u, l, r);
            ans += x.first, csm += x.second;
        }
    }
    return {ans + abs(l - csm) * w[u], l};
}

void init(vector<int> P, vector<int> W) {
    int n = (int) P.size();
    for (int i = 1; i < n; ++i) {
        adj[i].push_back(P[i]);
        adj[P[i]].push_back(i);
    }
    for (int i = 0; i < n; ++i) {
        w[i] = W[i];
    }
}

long long query(int L, int R) {
  return dfs(0, 0, L, R).first;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…