Submission #655996

#TimeUsernameProblemLanguageResultExecution timeMemory
655996onlk97Sprinkler (JOI22_sprinkler)C++14
100 / 100
835 ms97736 KiB
#include <bits/stdc++.h> using namespace std; vector <int> g[200050]; long long pa[200050],mut[200050][41]; void dfs(int cur,int prv){ for (int i=0; i<=40; i++) mut[cur][i]=1; pa[cur]=prv; for (int i:g[cur]){ if (i!=prv) dfs(i,cur); } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); long long n,l; cin>>n>>l; for (int i=1; i<n; i++){ int u,v; cin>>u>>v; g[u].push_back(v); g[v].push_back(u); } g[n+1].push_back(1); for (int i=n+2; i<=n+40; i++) g[i].push_back(i-1); dfs(n+40,0); long long h[n+1]; for (int i=1; i<=n; i++) cin>>h[i]; int q; cin>>q; while (q--){ int type; cin>>type; if (type==1){ long long x,d,w; cin>>x>>d>>w; int x1=x,d1=d-1; while (d>=0){ mut[x][d]=mut[x][d]*w%l; x=pa[x]; d--; } x=x1; while (d1>=0){ mut[x][d1]=mut[x][d1]*w%l; x=pa[x]; d1--; } } else if (type==2){ long long x; cin>>x; long long ans=h[x]%l; for (int i=0; i<=40; i++){ ans=ans*mut[x][i]%l; x=pa[x]; } cout<<ans<<'\n'; } } }
#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...