This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int N, L;
    cin >> N >> L;
    vector<vector<int>> adj(N);
    for(int i = 1; i < N; ++i){
        int u, v;
        cin >> u >> v;
        --u, --v;
        adj[u].emplace_back(v);
        adj[v].emplace_back(u);
    }
    vector<int> H(N);
    for(int i = 0; i < N; ++i) cin >> H[i];
    function<void(int, int, int, int)> dfs = [&](int u, int p, int limit, int coef){
        H[u] = 1LL * H[u] * coef % L;
        if(limit){
            for(auto v : adj[u]) if(v != p){
                dfs(v, u, limit - 1, coef);
            }
        }
    };
    int Q;
    cin >> Q;
    while(Q--){
        int type;
        cin >> type;
        if(type == 1){
            int x, d, w;
            cin >> x >> d >> w;
            --x;
            dfs(x, -1, d, w);
        } else{
            int x; cin >> x;
            --x;
            cout << H[x] << '\n';
        }
    }
    return 0;
}
| # | 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... |