社区讨论
40分求大佬指出问题
P12343[蓝桥杯 2025 省 AB/Python B 第二场] 树上寻宝参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mmexkwuw
- 此快照首次捕获于
- 2026/03/06 21:29 4 天前
- 此快照最后确认于
- 2026/03/08 14:45 前天
CPP
#include<iostream>
#include<cstring>
using namespace std;
const int N = 1e6 + 10;
int head[N];
int vis[N];
int tot;
int maxx;
long long worth;
struct edge {
int to;
int next;
int w;
}e[N];
int W[N];
void addedge(int u, int v,int w) {
e[tot].to = v;
e[tot].w = w;
e[tot].next = head[u];
head[u] = tot;
tot++;
}
void dfs(int root,int dep) {
if (dep >=maxx)return;
for (int i = head[root]; i != -1; i=e[i].next) {
int v = e[i].to;
if (!vis[v] && dep < maxx) {
worth += e[i].w;
vis[v] = 1;
dfs(v, dep + 1);
}
}
return;
}
int main() {
memset(head, -1, sizeof(head));
memset(vis, 0, sizeof(vis));
int n;
cin >> n;
int step;
cin >> step;
maxx = 2 * step;
for (int i = 0; i < n; i++) {
cin >> W[i];
}
for (int i = 1; i < n; i++) {
int x, y;
cin >> x >> y;
addedge(x, y, W[i]);
addedge(y, x, W[i]);
}
vis[1] = 1;
dfs(1, 0);
cout << worth+W[0];
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...