WA 54pts求助
查看原帖
WA 54pts求助
411727
Kingna楼主2022/5/18 21:07
#include <bits/stdc++.h>
using namespace std;

const int N = 205;
int n, m, dp[N][N];
int en, first[N];

struct edge {
	int e, d, next;
}ed[N];
void add_edge(int s, int e, int d) {
	en++;
	ed[en].e = e, ed[en].d = d;
	ed[en].next = first[s];
	first[s] = en;
}

void dfs(int u, int fa) {
	for (int p = first[u]; ~p; p = ed[p].next) {
		int e = ed[p].e, d = ed[p].d;
		if (e == fa) continue;
		dfs(e, u);
		for (int j = m; j; j--) {
			for (int k = 0; k + 1 <= j; k++) {
				dp[u][j] = max(dp[u][j], dp[u][j - k - 1] + d + dp[e][k]);
			}
		}
	} 
} 
	
int main() {
	cin >> n >> m;
	memset(first, -1, sizeof first);
	for (int i = 1; i <= n; i++) {
		int a, b, c;
		cin >> a >> b >> c;
		add_edge(a, b, c), add_edge(b, a, c);
	}
	dfs(1, -1);
	cout << dp[1][m] << endl;
}


2022/5/18 21:07
加载中...