Submission #1216409

#TimeUsernameProblemLanguageResultExecution timeMemory
1216409hengliaoTree (IOI24_tree)C++20
0 / 100
54 ms24676 KiB
#include "tree.h"
#include<bits/stdc++.h>
using namespace std;

#define F first
#define S second
#define pll pair<ll, ll>
#define vll vector<ll>
#define pb push_back

typedef long long ll;

namespace{

    const ll mxN=2e5+5;

    ll n, l, r;
    ll sum[mxN];
    multiset<pll> st[mxN];
    ll ans;
    ll p[mxN];
    vll adj[mxN];
    ll w[mxN];
    ll leafcnt;
    ll f, s;
}

void init(std::vector<int> P, std::vector<int> W) {
    n=W.size();
    for(ll i=1;i<n;i++){
        p[i]=P[i];
        adj[p[i]].pb(i);
    }
    for(ll i=0;i<n;i++){
        w[i]=W[i];
    }
    leafcnt=0;
    for(ll i=0;i<n;i++){
        if(adj[i].empty()){
            f+=w[i];
        }
    }
    for(ll i=0;i<n;i++){
        if(!adj[i].empty()){
            s+=w[i]*((ll) adj[i].size()-1);
        }
    }
}

long long query(int L, int R) {
    l=L;
    r=R;
    ll curans=f*l+s*r;
    return curans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...