| 比赛 | 
    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;
}