| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1363136 | activedeltorre | Tree (IOI24_tree) | C++20 | 2095 ms | 23548 KiB |
#include "tree.h"
#include <cassert>
#include <cstdio>
#include <vector>
using namespace std;
int n;
std::vector<int> p, w;
vector<int>adj[200005];
long long dim[200005];
long long dfs(int curr,int L,int R)
{
dim[curr]=0;
if(adj[curr].size()==0)
{
dim[curr]=L;
return (long long)L*w[curr];
}
long long cost=0;
for(auto k:adj[curr])
{
cost+=dfs(k,L,R);
dim[curr]+=dim[k];
}
if(dim[curr]>R)
{
long long diff=dim[curr]-R;
dim[curr]=R;
cost+=diff*w[curr];
}
return cost;
}
void init(std::vector<int> P, std::vector<int> W)
{
p = P;
w = W;
n = (int)p.size();
for(int i=1;i<n;i++)
{
adj[P[i]].push_back(i);
}
}
long long query(int L, int R)
{
return dfs(0,L,R);
}| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
