| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1187988 | nikd | 트리 (IOI24_tree) | C++20 | 2095 ms | 22944 KiB |
#include "tree.h"
#include <bits/stdc++.h>
using ll = long long;
using namespace std;
int n;
vector<vector<int>> adj;
vector<ll> w;
void init(std::vector<int> P, std::vector<int> W) {
n = P.size();
adj.resize(n);
w.resize(n);
for(int i = 0; i<n; i++) w[i] = W[i];
for(int i = 1; i<n; i++) adj[P[i]].push_back(i);
}
long long query(int L, int R) {
ll r = R; ll l = L;
ll sol = 0;
function<ll(int)> dfs = [&](int v)->ll{
if(!adj[v].size()){
sol += w[v]*l;
return l;
}
ll sz = 0;
for(int u: adj[v]){
sz += dfs(u);
}
if(sz <= r) return sz;
sol += (sz-r)*w[v];
return r;
};
dfs(0);
return sol;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
