Submission #785300

#TimeUsernameProblemLanguageResultExecution timeMemory
785300christinelynnSprinkler (JOI22_sprinkler)C++17
3 / 100
4086 ms19420 KiB
# include <bits/stdc++.h>
# define int long long
# define vi vector<int>
# define pb push_back
# define pii pair<int, int>
# define fi first
# define se second
# define endl '\n'
# define jess ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

int n, l, h[200005], qq, x, d, w;
vi adj[200005];

void bfs(int start) {
    queue<pair<pii, int>> q;
    q.push({{start, 0}, 0});
    while(!q.empty()) {
        int cur=q.front().fi.fi;
        int dis=q.front().fi.se;
        int par=q.front().se;
        q.pop();
        for(int i : adj[cur]) {
            if(i==par) continue;
            h[i]*=w;
            h[i]%=l;
            // cout << "dis " << dis << " " << d << endl;
            if((dis+1)>=d) continue;
            q.push({{i, dis+1}, cur});
        }
    }
}

void solve() {
    cin >> n >> l;
    for(int i=1; i<n; i++) {
        int u, v;
        cin >> u >> v;
        adj[u].pb(v);
        adj[v].pb(u);
    }
    for(int i=1; i<=n; i++) {
        cin >> h[i];
    }
    cin >> qq;
    for(int i=1; i<=qq; i++) {
        int tk; cin >> tk;
        if(tk==1) {
            cin >> x >> d >> w;
            h[x]*=w;
            h[x]%=l;
            if(d==0) continue;
            bfs(x);
        } else {
            cin >> x;
            cout << h[x] << endl;
        }
    }
}
 
signed main() {
    jess;
    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...