Submission #1031792

#TimeUsernameProblemLanguageResultExecution timeMemory
1031792adaawfSprinkler (JOI22_sprinkler)C++17
100 / 100
579 ms101200 KiB
#include <iostream> #include <vector> using namespace std; vector<int> g[200005]; long long int f[200005][45], d[200005]; void dfs(int x, int p) { d[x] = p; for (int w : g[x]) { if (w == p) continue; dfs(w, x); } } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); long long int n, l; cin >> n >> l; for (int i = 1; i < n; i++) { int u, v; cin >> u >> v; g[u].push_back(v); g[v].push_back(u); } dfs(1, 1); for (int i = 1; i <= n; i++) { long long int x; cin >> x; f[i][0] = x; for (int j = 1; j <= 41; j++) f[i][j] = 1; } int q; cin >> q; for (int jj = 0; jj < q; jj++) { int w; cin >> w; if (w == 1) { long long int x, z, y; cin >> x >> z >> y; while (z >= 0) { f[x][z] = f[x][z] * y % l; x = d[x]; z--; } } else { long long int x, z = 0, res = 1; cin >> x; while (1) { if (z == 41) break; if (x == 1) { res = res * f[x][z] % l; break; } res = res * f[x][z] % l * f[x][z + 1] % l; z++; x = d[x]; } cout << res << '\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...