Submission #1274054

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