Submission #1313953

#TimeUsernameProblemLanguageResultExecution timeMemory
1313953nicolo_010Tree (IOI24_tree)C++20
7 / 100
58 ms23032 KiB
#include <bits/stdc++.h>
#include "tree.h"
using namespace std;
using ll = long long;
using pii = pair<int, int>;

int n;
std::vector<int> p, w;
ll k;

vector<vector<int>> adj;

void dfs(int n, int p=-1) {
    bool leaf = true;
    for (auto x : adj[n]) {
        if (x==p) continue;
        leaf = false;
        dfs(x, n);
    }
    if (leaf) k++;
}

void init(std::vector<int> P, std::vector<int> W) {
    p = P;
    w = W;
    n = (int)p.size();
    adj.assign(n, {});
    for (int i=1; i<n; i++) {
        int a = i;
        int b = p[i];
        adj[a].push_back(b);
        adj[b].push_back(a);
    }
    k=0;
    dfs(0);
}

long long query(int L, int R) {
    return k*L+(max(0ll, k*L-R));
}
#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...