답안 #921260

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
921260 2024-02-03T15:46:08 Z OAleksa Sprinkler (JOI22_sprinkler) C++14
0 / 100
3366 ms 60884 KB
#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
const int N = 2e5 + 69;
const int D = 44;
int sum[N][D];
int n, L, a[N], par[N], q;
vector<int> g[N];
void dfs(int v, int p) {
	par[v] = p;
	for (auto u : g[v]) {
		if (u == p)
			continue;
		dfs(u, v);
	}
}
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int tt = 1;
  //cin >> tt;
  while (tt--) {
  	cin >> n >> L;
		for (int i = 1;i <= n - 1;i++) {
			int a, b;
			cin >> a >> b;
			g[a].push_back(b);
			g[b].push_back(a);
		}
		for (int i = 1;i <= n;i++)
			cin >> a[i];
		for (int i = 1;i <= n;i++) {
			for (int j = 0;j < D;j++)
				sum[i][j] = 1;
		}
		dfs(1, 0);
		cin >> q;
		while (q--) {
			int t;
			cin >> t;
			if (t == 1) {
				int x, d, w;
				cin >> x >> d >> w;
				int t = x, j = 0;
				while (t != 0 && j <= d) {
					a[t] = (a[t] * w) % L;
					j++;
					t = par[t];
				}
				sum[x][d] = (sum[x][d] * w) % L;
			}
			else {
				int x;
				cin >> x;
				int ans = a[x];
				int t = par[x], j = 1;
				while (t != 0 && j < D) {
					for (int i = j;i < D;i++)
						ans = (ans * sum[t][i]) % L;
					t = par[t];
					j++;
				}
				cout << ans << '\n';
			}
		}
  }
  return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 7004 KB Output is correct
2 Correct 1 ms 6748 KB Output is correct
3 Correct 2 ms 6744 KB Output is correct
4 Incorrect 4 ms 8796 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 6748 KB Output is correct
2 Incorrect 2031 ms 57904 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 6748 KB Output is correct
2 Incorrect 2031 ms 57904 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 6748 KB Output is correct
2 Incorrect 3366 ms 59324 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 6748 KB Output is correct
2 Incorrect 3158 ms 60884 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 7004 KB Output is correct
2 Correct 1 ms 6748 KB Output is correct
3 Correct 2 ms 6744 KB Output is correct
4 Incorrect 4 ms 8796 KB Output isn't correct
5 Halted 0 ms 0 KB -