Submission #1208004

#TimeUsernameProblemLanguageResultExecution timeMemory
1208004HanksburgerSprinkler (JOI22_sprinkler)C++20
100 / 100
664 ms91704 KiB
#include <bits/stdc++.h> #define int long long using namespace std; int a[200005][45], par[200005], n, l, q; vector<int> adj[200005]; void dfs(int u) { for (int v:adj[u]) { if (v==par[u]) continue; par[v]=u; dfs(v); } } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> l; for (int i=1; i<n; i++) { int u, v; cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); } for (int i=1; i<=n; i++) cin >> a[i][0]; for (int i=1; i<=40; i++) for (int j=1; j<=n; j++) a[j][i]=1; dfs(1); cin >> q; while (q--) { int t; cin >> t; if (t==1) { int x, d, w; cin >> x >> d >> w; for (int j=d; j>=0; j--) { a[x][j]=a[x][j]*w%l; a[x][j-1]=a[x][j-1]*w%l; if (x==1) { for (int k=j-2; k>=0; k--) a[x][k]=a[x][k]*w%l; break; } x=par[x]; } } else { int x, ans=1; cin >> x; for (int j=0; j<=40; j++) { ans=ans*a[x][j]%l; if (x==1) break; x=par[x]; } cout << ans << '\n'; } } }
#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...