제출 #1273601

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

using namespace std;

vector<int> adj[200001];
int arr[200001],arr2[200001];


void dfs(int i,long long& res,int l,int r)
{
    int sum=0;
    for(auto it : adj[i])
    {
        dfs(it,res,l,r);
        sum+=arr2[it];
    }
    if(adj[i].size()==0)
    {
        sum=l;
        res+=l*arr[i];
    }
    if(sum>r)
    {
        int br=sum-r;
        sum=r;
        res+=br*arr[i];
    }
    arr2[i]=l;
}

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

}

long long query(int L, int R)
{
    long long res=0;
    dfs(0,res,L,R);
    return res;
}
#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...