제출 #1214508

#제출 시각아이디문제언어결과실행 시간메모리
1214508hyakup트리 (IOI24_tree)C++20
10 / 100
2095 ms28136 KiB
#include "tree.h" #include <bits/stdc++.h> using namespace std; using ll = long long; int n; vector<int> p, w; vector<vector<int>> adj; void init(vector<int> P, vector<int> W) { p = P; n = (int)p.size(); w = W; adj.resize(n); for( int i = 1; i < n; i++ ){ adj[p[i]].push_back(i); } } ll query(int l, int r) { vector<ll> c(n), sum(n); function<void(int)> dfs = [&]( int cur ){ for( int viz : adj[cur] ){ dfs( viz ); sum[cur] += sum[viz]; } if( sum[cur] < l ){ c[cur] = 1LL*l - sum[cur]; sum[cur] = l; } if( sum[cur] > r ){ c[cur] = 1LL*r - sum[cur]; sum[cur] = r; } }; dfs( 0 ); ll resp = 0; for( int i = 0; i < n; i++ ) resp += 1LL*abs(c[i])*w[i]; return resp; }
#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...