Submission #1130879

#TimeUsernameProblemLanguageResultExecution timeMemory
1130879nguyenkhangninh99Sprinkler (JOI22_sprinkler)C++20
100 / 100
2166 ms179744 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int maxn = 2e5 + 69; vector<int> g[maxn]; int mod; int h[maxn], par[maxn]; int f[maxn][100]; void dfs(int u){ for(int v: g[u]){ if(v != par[u]){ par[v] = u; dfs(v); } } } void solve(){ int n; cin >> n >> mod; for(int i = 1; i <= n - 1; i++){ int u, v; cin >> u >> v; g[u].push_back(v); g[v].push_back(u); } for(int i = 1; i <= n; i++) cin >> h[i]; for(int i = n + 1; i <= n + 40; i++) g[i].push_back(i + 1); g[n + 41].push_back(1); dfs(n + 1); for(int i = 0; i < maxn; i++){ for(int j = 0; j < 100; j++) f[i][j] = 1; } int q; cin >> q; while(q--){ int type; cin >> type; if(type == 1){ int u, d, w; cin >> u >> d >> w; while(d >= 0){ f[u][d] = (f[u][d] *= w) %= mod; if(d && u) f[u][d - 1] = (f[u][d - 1] *= w) %= mod; u = par[u]; d--; } } else{ int u; cin >> u; int res = h[u]; for (int d = 0; d <= 40; d++) res = (res * f[u][d]) % mod, u = par[u]; cout << res << "\n"; } } } signed main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); solve(); }
#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...