#include <bits/stdc++.h>
using namespace std;
#define int long long
#define nl endl
#define hehe ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL) ;
// const int mod = 998244353;
const int mod = 1e9+7;
const int M = 2e5+5;
int n,l;
vector < int > adj[M] = {};
int h[M] = {};
void bfs(int x, int d, int w){
queue < pair < int , pair < int , int > > > q;
q.push({x,{0,0}});
while(!q.empty()){
int cur = q.front().first;
int dis = q.front().second.first;
int pref = q.front().second.second;
// cout << cur << ' ' << dis << ' ' << pref << nl;
if(dis <= d){
h[cur]*=w;
h[cur]%=l;
}
q.pop();
if(dis > d)continue;
for(auto nxt : adj[cur]){
if(nxt == pref)continue;
else{
q.push({nxt,{dis+1,cur}});
}
}
}
}
void solve(){
cin >> n >> l;
for(int i = 1; i<=n-1; i++){
int u,v; cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
for(int i = 1; i<=n; i++){
cin >> h[i];
}
int m; cin >> m;
for(int i = 1; i<=m; i++){
int t; cin >> t;
if(t==1){
int x,d,w; cin >> x >> d >> w;
// bfs(x,d,w);
if(d == 0){
h[x]*=w;
h[x]%=l;
}
if(d == 1){
h[x]*=w;
h[x]%=l;
for(auto nxt : adj[x]){
h[nxt]*=w;
h[nxt]%=l;
}
}
// for(int j = 1; j<=n; j++){
// cout << h[j] << ' ';
// }cout << nl;
}
else{
int x; cin >> x;
cout << h[x] << nl;
}
}
}
signed main(){
hehe
// int t; cin >> t;
int t = 1;
while(t--){
solve();
}
}
# | 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... |