Submission #1236039

#TimeUsernameProblemLanguageResultExecution timeMemory
1236039dssfsuper2Magic Tree (CEOI19_magictree)C++20
0 / 100
33 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; int dpf(int node, int limd){ int res2= 0; for(auto thing:adj[node]){ res2+=dpf(thing, (int)1e9); } if(maxx[node]<=days[node] && values[node]==1)res2++; return res2; } 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) << '\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...