Submission #1236050

#TimeUsernameProblemLanguageResultExecution timeMemory
1236050dssfsuper2Magic Tree (CEOI19_magictree)C++20
0 / 100
32 ms8392 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
using pii = pair<int, int>;
#define all(x) (x).begin(), (x).end()


vector<int> values;
vector<int> days;
vector<vector<int>> adj;
map<int, int> dayscompressed;

int maxx[100001];
int tt;
pair<int, int> dpf(int node, int limd){
    int res2= 0;
    int maxxx=-1;
    for(auto thing:adj[node]){
        auto x = dpf(thing, (int)1e9);
        res2+=x.first;
        maxxx=max(maxxx, x.second);
    }
    
    if(maxxx<=days[node] && values[node]==1){
        res2++;
        maxxx=days[node];
    }
    return {res2, maxxx};
}

int maxds(int node){
    int res = days[node];
    for(auto thing:adj[node]){
        res=max(res, maxds(thing));
    }
    maxx[node]=res;
    return res;
}
void solve(){
    int n, m, k;cin>>n>>m>>k;
    values.assign(n+1, 0);
    days.assign(n+1, 0);
    adj.resize(n+1);
    vector<int> ds = {0};
    
    for(int i = 2;i<=n;i++){
        int p;cin>>p;
        adj[p].push_back(i);
    }
    for(int i = 0;i<m;i++){
        int v, d, w;cin>>v>>d>>w;
        values[v]=w;
        days[v]=d;
        ds.push_back(d);
    }
    sort(all(ds));
    int cp=0;
    for(int i = 0;i<ds.size();i++){
        if(i==0 || ds[i]!=ds[i-1]){
            dayscompressed[ds[i]]=cp;
            cp++;
        }
    }
    tt=cp;
    dayscompressed[(int)1e9]=cp;
    for(auto& thing:days){
        thing=dayscompressed[thing];
    }
    bool isss3 = (*max_element(all(values))==1);
    maxds(1);
    cout << dpf(1, (int)1e9).first << '\n';

}











signed main(){
    ios_base::sync_with_stdio(false);cin.tie(0);
    int t = 1;
    while (t--)
    {
        solve();
    }
    
}
#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...