제출 #1224947

#제출 시각아이디문제언어결과실행 시간메모리
1224947minhpkSprinkler (JOI22_sprinkler)C++20
50 / 100
574 ms105976 KiB
#include <bits/stdc++.h> #define int long long using namespace std; int a,mod; vector <int> z[1000005]; int par[1000005]; int dp[250005][42]; void dfs(int i){ for (auto p:z[i]){ if (p==par[i]){ continue; } par[p]=i; dfs(p); } } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> a >> mod; for (int i=1;i<a;i++){ int x,y; cin >> x >> y; z[x].push_back(y); z[y].push_back(x); } dfs(1); for (int i=0;i<=a;i++){ for (int j=1;j<=40;j++){ dp[i][j]=1; } } for (int i=1;i<=a;i++){ cin >> dp[i][0]; } int q; cin >> q; while (q--){ int c; cin >> c; if (c==1){ int x,d,w; cin >> x >> d >> w; int cur = x; for (int i = d; i >= 0; i--) { dp[cur][i] = dp[cur][i] * w % mod; if (i > 0) { dp[cur][i-1] = dp[cur][i-1] * w % mod; } cur = par[cur]; } }else{ int x; cin >> x; int res=1; for (int i=0;i<=40;i++){ res=res*dp[x][i]%mod; x=par[x]; } cout << res << "\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...