Submission #65907423
Source Code Expand
Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#ifndef _Alignof
#define _Alignof __alignof__
#endif
#include <bits/stdc++.h>
#define LOOP(n) for (int _i = 0; _i < (n); _i++)
#define REP(i, n) for (int i = 0; i < (n); ++i)
#define RREP(i, n) for (int i = (n); i >= 0; --i)
#define FOR(i, r, n) for (int i = (r); i < (n); ++i)
#define ALL(obj) begin(obj), end(obj)
#define yes "Yes"
#define no "No"
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<ll, int> pli;
typedef pair<int, ll> pil;
typedef vector<vector<int>> vvi;
typedef vector<vector<ll>> vvl;
const vector<char> alpha = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
const ll INF = 1e9 + 7;
const ll MOD = 998244353;
template <typename T> bool chmax(T &a, T b) {if (a < b) {a = b;return true;}return false;}
template <typename T> bool chmin(T &a, T b) {if (a > b) {a = b;return true;}return false;}
vector<char> q={'v','>','^','<'};
int main(){
int N;
cin >> N;
vector<pair<int,int>> edges(N-1);
vvi adj(N);
REP(i, N-1){
int u, v;
cin >> u >> v;
--u; --v;
edges[i] = {u, v};
adj[u].push_back(v);
adj[v].push_back(u);
}
vector<int> par(N, -1), tin(N), tout(N);
int timer = 0;
stack<pair<int,int>> st;
st.push({0, 0});
par[0] = -1;
while(!st.empty()){
int v = st.top().first;
int &i = st.top().second;
if (i == 0) {
tin[v] = ++timer;
}
if (i < (int)adj[v].size()){
int u = adj[v][i++];
if (u == par[v]) continue;
par[u] = v;
st.push({u, 0});
} else {
tout[v] = timer;
st.pop();
}
}
vector<int> child(N-1);
REP(i, N-1){
int u = edges[i].first, v = edges[i].second;
if (par[v] == u) child[i] = v;
else child[i] = u;
}
vector<ll> bit(N+1, 0);
auto add = [&](int i, ll v){
for (; i <= N; i += i & -i) bit[i] += v;
};
auto sum = [&](int i){
ll s = 0;
for (; i > 0; i -= i & -i) s += bit[i];
return s;
};
auto range_sum = [&](int l, int r){
return sum(r) - sum(l-1);
};
REP(v, N) add(tin[v], 1);
ll total = N;
int Q;
cin >> Q;
while (Q--){
int t;
cin >> t;
if (t == 1){
int x; ll w;
cin >> x >> w;
--x;
add(tin[x], w);
total += w;
} else {
int y;
cin >> y;
--y;
int v = child[y];
ll s = range_sum(tin[v], tout[v]);
ll diff = total - 2*s;
if (diff < 0) diff = -diff;
cout << diff << endl;
}
}
}
Submission Info
| Submission Time |
|
| Task |
F - Compare Tree Weights |
| User |
una_o0 |
| Language |
C++ 17 (gcc 12.2) |
| Score |
500 |
| Code Size |
2980 Byte |
| Status |
AC |
| Exec Time |
581 ms |
| Memory |
30788 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
500 / 500 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
example_00.txt |
| All |
example_00.txt, hand_00.txt, hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, hand_06.txt, hand_07.txt, hand_08.txt, hand_09.txt, hand_10.txt, hand_11.txt, random_00.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, random_22.txt, random_23.txt, random_24.txt, random_25.txt, random_26.txt, random_27.txt, random_28.txt, random_29.txt |
| Case Name |
Status |
Exec Time |
Memory |
| example_00.txt |
AC |
1 ms |
3540 KiB |
| hand_00.txt |
AC |
441 ms |
30312 KiB |
| hand_01.txt |
AC |
406 ms |
30108 KiB |
| hand_02.txt |
AC |
461 ms |
29252 KiB |
| hand_03.txt |
AC |
311 ms |
29300 KiB |
| hand_04.txt |
AC |
581 ms |
29472 KiB |
| hand_05.txt |
AC |
571 ms |
29224 KiB |
| hand_06.txt |
AC |
1 ms |
3428 KiB |
| hand_07.txt |
AC |
432 ms |
29768 KiB |
| hand_08.txt |
AC |
442 ms |
28988 KiB |
| hand_09.txt |
AC |
439 ms |
29104 KiB |
| hand_10.txt |
AC |
430 ms |
29488 KiB |
| hand_11.txt |
AC |
423 ms |
30788 KiB |
| random_00.txt |
AC |
448 ms |
29220 KiB |
| random_01.txt |
AC |
439 ms |
29468 KiB |
| random_02.txt |
AC |
439 ms |
29544 KiB |
| random_03.txt |
AC |
443 ms |
29228 KiB |
| random_04.txt |
AC |
435 ms |
29460 KiB |
| random_05.txt |
AC |
405 ms |
30364 KiB |
| random_06.txt |
AC |
406 ms |
30044 KiB |
| random_07.txt |
AC |
408 ms |
30148 KiB |
| random_08.txt |
AC |
413 ms |
30372 KiB |
| random_09.txt |
AC |
407 ms |
30020 KiB |
| random_10.txt |
AC |
453 ms |
29204 KiB |
| random_11.txt |
AC |
448 ms |
29372 KiB |
| random_12.txt |
AC |
447 ms |
29300 KiB |
| random_13.txt |
AC |
448 ms |
29220 KiB |
| random_14.txt |
AC |
446 ms |
29380 KiB |
| random_15.txt |
AC |
445 ms |
29240 KiB |
| random_16.txt |
AC |
448 ms |
29308 KiB |
| random_17.txt |
AC |
452 ms |
29312 KiB |
| random_18.txt |
AC |
451 ms |
29196 KiB |
| random_19.txt |
AC |
449 ms |
29224 KiB |
| random_20.txt |
AC |
445 ms |
29240 KiB |
| random_21.txt |
AC |
444 ms |
29368 KiB |
| random_22.txt |
AC |
446 ms |
29216 KiB |
| random_23.txt |
AC |
448 ms |
29244 KiB |
| random_24.txt |
AC |
442 ms |
29276 KiB |
| random_25.txt |
AC |
445 ms |
29204 KiB |
| random_26.txt |
AC |
448 ms |
29308 KiB |
| random_27.txt |
AC |
441 ms |
29368 KiB |
| random_28.txt |
AC |
454 ms |
29284 KiB |
| random_29.txt |
AC |
444 ms |
29368 KiB |