#include <bits/stdc++.h>
using namespace std;
#define int long long
vector<int> par;
vector<vector<int>> g;
void fpar(int k, int p){
par[k] = p;
for(int i = 0; i < g[k].size(); i++){
if(g[k][i] == p) continue;
fpar(g[k][i], k);
}
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
// freopen("a.in", "r", stdin);
// freopen("pertahanan_6.out", "w", stdout);
int n, l; cin >> n >> l;
vector<vector<int>> dp(n+1, vector<int>(41, 1));
par.resize(n+1);
g.resize(n+1);
for(int i = 0; i < n-1; i++){
int a, b; cin >> a >> b;
g[a].push_back(b);
g[b].push_back(a);
}
vector<int> h(n+1);
for(int i = 1; i <= n; i++){
cin >> h[i];
}
fpar(1, -1);
int q; cin >> q;
while(q--){
int t; cin >> t;
if(t == 1){
int k, d, w; cin >> k >> d >> w;
while(d >= 0 && k != -1){
h[k] *= w;
h[k]%=l;
dp[k][d] *= w;
dp[k][d]%=l;
k = par[k];
d--;
}
}else{
int k; cin >> k;
int o = k;
int ns = h[k];
k = par[k];
int dis = 1;
for(int i = 1; i <= 40 && k != -1; i++){
ns *= dp[k][dis];
ns%=l;
k = par[k];
dis++;
}
cout << ns << "\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... |