제출 #1228969

#제출 시각아이디문제언어결과실행 시간메모리
1228969Double_SlashSprinkler (JOI22_sprinkler)C++20
3 / 100
4093 ms15740 KiB
#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 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...