Submission #1023824

#TimeUsernameProblemLanguageResultExecution timeMemory
1023824manizareSprinkler (JOI22_sprinkler)C++14
100 / 100
594 ms105556 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O3,unroll-loops") #define pb push_back #define F first #define S second #define all(a) a.begin(),a.end() #define pii pair <int,int> #define PII pair<pii , pii> #define ld long double #define int long long #define sz(v) (int)v.size() #define rep(i , a , b) for(int i=a;i <= b;i++) #define per(i, a , b) for(int i=a;i >= b;i--) using namespace std ; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int maxn = 2e5 + 10 , sq = 550, inf = 1e8+10 , mod = 10007 , lg = 20 ; int n , l , h[maxn] , dis[maxn] , par[maxn] ; vector <int> G[maxn] ; void dfs(int v){ for(int u : G[v]){ if(par[v] == u)continue ; dis[u] = dis[v] +1 ; par[u] = v ; dfs(u) ; } } int t[maxn][45] , ted[maxn+100] ; signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> l ; rep(i , 1, n-1){ int v , u ;cin >> v >> u ; G[v].pb(u) ; G[u].pb(v) ; } rep(i ,1 , n)cin >> h[i] ; int q ;cin >> q ;rep(i ,0, n+42)ted[i] = 1 ; rep(i , 1 , n)rep(j , 0 , 40)t[i][j] = 1 ; dfs(1) ; while(q--){ int T ; cin >> T ; if(T == 1){ int x , w , d ; cin >> x >> d >> w ; if(d >= dis[x])ted[d-dis[x]] = ted[d-dis[x]] * w % l ; while(d >= 0){ if(x == 1)break ; t[x][d] = (t[x][d] * w % l); if(d)t[x][d-1] = t[x][d-1] * w % l ; d--; x = par[x] ; } }else{ int x ;cin >> x ; int d = 0 ; int ans = h[x] ; rep(j , dis[x] , 42)ans= ans * ted[j]% l ; while(x!=1){ if(d > 40)break ; ans= ans * t[x][d] % l ; d++ ; 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...