Submission #1183966

#TimeUsernameProblemLanguageResultExecution timeMemory
1183966browntoadSprinkler (JOI22_sprinkler)C++20
3 / 100
4094 ms15776 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long 
// #define int ll
#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define REP(i, n) FOR(i, 0, n) 
#define REP1(i, n) FOR(i, 1, n+1)
#define RREP(i, n) for (int i = (n)-1; i >= 0; i--)
#define pii pair<int, int>
#define f first
#define s second
#define ALL(x) (x).begin(), (x).end()
#define SZ(x) (int)((x).size())
#define pb push_back
#define endl '\n'
#define IOS() ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)

const ll maxn = 2e5+5;

int n, mod, q;
vector<int> g[maxn];
vector<int> H(maxn);

ll pw(ll a, ll p){
    ll ret = 1;
    while(p > 0){
        if (p & 1){
            ret *= a;
            ret %= mod;
        }
        a *= a;
        a %= mod;
        p >>= 1;
    }
    return ret;
}
ll inv(ll a){
    return pw(a, mod-2);
}

void dfs(int u, int cd, int val, int pre){
    if (cd < 0) return;
    H[u] = ((ll)(H[u]) * val)%mod;
    for (auto v:g[u]){
        if (v != pre) dfs(v, cd-1, val, u);
    }
}

void modify(int U, int D, int W){
    dfs(U, D, W, -1);
}
int query(int U){
    return H[U];
}

signed main(){
    IOS();
    cin>>n>>mod;

    REP(i, n-1){
        int u, v; cin>>u>>v;
        g[u].pb(v); g[v].pb(u);
    }
    REP1(i, n) cin>>H[i];

    cin>>q;
    REP(i, q){
        int t; cin>>t;
        if (t == 1){
            int a, b, c; cin>>a>>b>>c;
            modify(a, b, c);
        }
        else{
            int x; cin>>x;
            cout<<query(x)<<endl;
        }
    }
}
/*
4 7
1 2
2 3
3 4
1
1
1
1
11
1 2 1 2
1 1 0 2
2 1
2 2
2 3
2 4
1 4 10 2
2 1
2 2
2 3
2 4

5 12
1 2
1 3
3 4
1 5
6
1
3
5
3
6
1 2 2 3
1 3 2 3
1 5 2 7
2 3
2 1
2 4
*/
#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...