Submission #892575

#TimeUsernameProblemLanguageResultExecution timeMemory
892575vjudge1Sprinkler (JOI22_sprinkler)C++17
100 / 100
1200 ms93880 KiB
#include <bits/stdc++.h> using namespace std; #define all(x) x.begin(), x.end() #define ar array #define pb push_back #define ln '\n' #define int long long using i64 = long long; template <class F, class _S> bool chmin(F &u, const _S &v){ bool flag = false; if ( u > v ){ u = v; flag |= true; } return flag; } template <class F, class _S> bool chmax(F &u, const _S &v){ bool flag = false; if ( u < v ){ u = v; flag |= true; } return flag; } int Mod; void prod(int &u, const int &v){ u = (u * v) % Mod; } signed main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n >> Mod; vector <vector<int>> G(n); for ( int i = 1; i < n; i++ ){ int u, v; cin >> u >> v; --u, --v; G[u].pb(v), G[v].pb(u); } vector <int> fa(n); auto dfs = [&](auto dfs, int u, int p) -> void{ fa[u] = p; for ( auto &v: G[u] ){ if ( v != p ){ dfs(dfs, v, u); } } }; dfs(dfs, 0, -1); vector <int> h(n); for ( auto &i: h ) cin >> i; vector <vector<int>> a(n, vector <int> (41, 1)); int q; cin >> q; while ( q-- ){ int t, u; cin >> t >> u; --u; if ( t == 1 ){ int d, w; cin >> d >> w; while ( d > 0 && fa[u] != -1 ){ prod(a[u][d], w); prod(a[u][d - 1], w); --d; u = fa[u]; } while ( d > 0 ){ prod(a[u][d], w); --d; } prod(a[u][0], w); } else{ int ans = h[u]; for ( int i = 0; i <= 40 && u != -1; i++ ){ prod(ans, a[u][i]); u = fa[u]; } cout << ans << ln; } } cout << '\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...