#pragma GCC optimize("O3", "unroll-loops")
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<vvi> v3i;
typedef vector<v3i> v4i;
typedef vector<bool> vb;
typedef vector<vb> vvb;
typedef pair<int, int> pi;
typedef pair<ll, ll> pll;
typedef vector<pi> vpi;
typedef vector<pll> vpll;
#define INF(dt) numeric_limits<dt>::max()
#define NINF(dt) numeric_limits<dt>::min()
#define pb push_back
ll MOD = 1ll;
int main() {
ll n;
cin >> n >> MOD;
vvll adj(n, vll());
for(ll i = 0ll; i < n - 1ll; i++) {
ll a, b;
cin >> a >> b;
a--; b--;
adj[a].pb(b);
adj[b].pb(a);
}
vll h(n, 0ll);
for(ll& v : h) cin >> v;
ll q;
cin >> q;
while(q--) {
int qtype;
cin >> qtype;
if(qtype == 1) {
ll x, d, w;
cin >> x >> d >> w;
x--;
vb vis(n, false);
queue<pll> q;
q.push({x, 0ll});
while(!q.empty()) {
auto [i, cd] = q.front();
q.pop();
if(vis[i]) continue;
if(cd > d) continue;
vis[i] = true;
h[i] = (h[i] * w) % MOD;
for(ll j : adj[i]) {
q.push({j, cd + 1ll});
}
}
} else {
ll x;
cin >> x;
x--;
cout << h[x] << "\n";
}
}
cout << flush;
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... |