제출 #1274203

#제출 시각아이디문제언어결과실행 시간메모리
1274203lechaaSprinkler (JOI22_sprinkler)C++20
9 / 100
838 ms97496 KiB
#include <bits/stdc++.h> using namespace std; #define int long long vector<int> par; vector<vector<int>> g; void fpar(int k, int p){ par[k] = p; for(int i = 0; i < g[k].size(); i++){ if(g[k][i] == p) continue; fpar(g[k][i], k); } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); // freopen("a.in", "r", stdin); // freopen("pertahanan_6.out", "w", stdout); int n, l; cin >> n >> l; vector<vector<int>> dp(n+1, vector<int>(41, 1)); par.resize(n+1); g.resize(n+1); for(int i = 0; i < n-1; i++){ int a, b; cin >> a >> b; g[a].push_back(b); g[b].push_back(a); } vector<int> h(n+1); for(int i = 1; i <= n; i++){ cin >> h[i]; } fpar(1, -1); int q; cin >> q; while(q--){ int t; cin >> t; if(t == 1){ int k, d, w; cin >> k >> d >> w; while(d >= 0 && k != -1){ h[k] *= w; h[k]%=l; dp[k][d] *= w; dp[k][d]%=l; k = par[k]; d--; } }else{ int k; cin >> k; int o = k; int ns = h[k]; k = par[k]; int dis = 1; for(int i = 1; i <= 40 && k != -1; i++){ ns *= dp[k][dis]; ns%=l; k = par[k]; dis++; } cout << ns << "\n"; } } return 0; }
#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...