| 比赛 |
期末考试1 |
评测结果 |
WTWWTTTTTT |
| 题目名称 |
Output Only |
最终得分 |
0 |
| 用户昵称 |
赵飞羽 |
运行时间 |
7.886 s |
| 代码语言 |
C++ |
内存使用 |
5.50 MiB |
| 提交时间 |
2026-02-08 09:17:13 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
int n, k, q, c[N], u, v, cnt, ans;
int hd[N], ver[N], pre[N], idx;
void add(int x, int y) {
ver[++idx] = y;
pre[idx] = hd[x];
hd[x] = idx;
}
void dfs(int x, int p) {
if ((c[x] + p) % k) {
p += k - c[x];
ans++;
}
for (int i = hd[x]; i; i = pre[i]) {
int y = ver[i];
dfs(y, p);
}
}
signed main() {
freopen("tioj_outplay.in", "r", stdin);
freopen("tioj_outplay.out", "w", stdout);
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> n >> k >> q;
for (int i = 1; i <= n; i++) cin >> c[i];
for (int i = 1; i < n; i++) {
cin >> u >> v;
if (u == v - 1) cnt++;
add(u, v);
}
for (int i = 1; i <= q; i++) {
cin >> u >> v;
c[u] = v;
ans = 0;
dfs(1, 0);
cout << ans << "\n";
}
return 0;
}
/*
5 4 4
1 0 1 2 3
1 2
1 3
3 4
3 5
2 1
1 0
3 2
1 2
*/