#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int n, L, q, h[200001];
vector<int> adj[200001];
void dfs(int i, int d, int w, int p) {
h[i] = (ll) h[i] * w % L;
if (not d) return;
for (int j: adj[i]) if (j != p) dfs(j, d - 1, w, i);
}
int main() {
cin >> n >> L;
for (int i = n; --i;) {
int a, b;
cin >> a >> b;
adj[a].emplace_back(b);
adj[b].emplace_back(a);
}
for (int i = 1; i <= n; ++i) cin >> h[i];
cin >> q;
while (q--) {
int t, x;
cin >> t >> x;
if (t == 1) {
int d, w;
cin >> d >> w;
dfs(x, d, w, 0);
} else cout << h[x] << endl;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |