比赛 |
CSP2022提高组 |
评测结果 |
AAWWWWWWAAAWWWWAAWWW |
题目名称 |
假期计划 |
最终得分 |
35 |
用户昵称 |
该账号已注销 |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2022-10-30 09:30:48 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
struct edge {
int t, n;
} e[20010];
long long n, m, k, v[3000], hd[10010], cnt = 0, ans = 0;
void add(int x, int y) {
e[++cnt].t = y;
e[cnt].n = hd[x];
hd[x] = cnt;
}
int dfs(int x, int y, long long u, int fa) {
bool k = 0;
for (int i = hd[x]; i; i = e[i].n) {
int ver = e[i].t;
if (y == 4) {
if (ver == 1)
k = 1;
continue;
}
if (ver == fa)
continue;
dfs(ver, y + 1, u + v[ver], x);
}
if (k == 1) {
ans = max(ans, u);
}
return 0;
}
int main() {
freopen("csp2022_holiday.in", "r", stdin);
freopen("csp2022_holiday.out", "w", stdout);
cin >> n >> m >> k;
for (int i = 2; i <= n; i++) {
cin >> v[i];
}
for (int i = 1; i <= m; i++) {
int x, y;
cin >> x >> y;
add(x, y);
add(y, x);
}
if (k == 0) {
dfs(1, 0, 0, 1);
cout << ans << endl;
return 0;
}
return 0;
}