Submission #1274051

#TimeUsernameProblemLanguageResultExecution timeMemory
1274051tatas07Sprinkler (JOI22_sprinkler)C++20
0 / 100
925 ms54472 KiB
#include <bits/stdc++.h> using namespace std; #define long long int vector<int> adj[200045]; int par[200045]; int h[200045]; void dfs(int u,int p){ for(int next:adj[u]){ if(next==p){ continue; } par[next]=u; dfs(next,u); } } signed main(){ int n,mod; cin>>n>>mod; 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 dp[n+45][45]; memset(dp,1,sizeof(dp)); for (int i = 1; i <=40; i++) { adj[i+n].push_back(i+n-1); adj[i+n-1].push_back(i+n); } dfs(n+40,0); int q; cin>>q; while(q--){ int jenis; cin>>jenis; if(jenis==1){ int x,d,w; cin>>x>>d>>w; while (x!=0 && d>=0) { dp[x][d]*=w; dp[x][d]%=mod; d--; if(d>=0){ dp[x][d]*=w; dp[x][d]%=mod; } x=par[x]; } }else{ int x; int d=0; cin>>x; int res=h[x]; while(x!=0 && d<=40){ res*=dp[x][d]; res%=mod; d++; x=par[x]; } cout<<res<<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...