UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#168555#9. 小h的树wuzr100138ms33364kbC++1.7kb2023-02-07 11:26:152023-02-07 11:26:16

answer

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
ll rd() {
	ll now = 0, f = 1;
	char c = getchar();
	while ('0' > c || c > '9') {
		if (c == '-') f = -1;
		c = getchar();
	}
	while ('0' <= c && c <= '9') now = now * 10 + c - 48, c = getchar();
	return now * f;
}
void wr(ll x) {
	if (x < 0) x = -x, putchar('-');
	if (x > 9) wr(x / 10);
	putchar(x % 10 + 48);
	return ;
}
const int N = 3005, inf = 1e9;
struct E {
	int to, nxt, w;
} e[N << 1];
int n, k, sz[N], dp[N][N][3], head[N], cnt;
void add(int x, int y, int z) {
	e[++cnt] = {y, head[x], z};
	head[x] = cnt;
}
void merge(int x, int y, int len) {
	rep(i, sz[x] + 1, sz[x] + sz[y]) dp[x][i][0] = dp[x][i][1] = dp[x][i][2] = inf;
	per(i, sz[x], 1) rep(j, 1, sz[y]) {
		dp[x][i + j][0] = min(dp[x][i + j][0], dp[x][i][0] + dp[y][j][0] + len * 2);
		dp[x][i + j][1] = min(dp[x][i + j][1], dp[x][i][1] + dp[y][j][0] + len * 2);
		dp[x][i + j][1] = min(dp[x][i + j][1], dp[x][i][0] + dp[y][j][1] + len);
		dp[x][i + j][2] = min(dp[x][i + j][2], dp[x][i][2] + dp[y][j][0] + len * 2);
		dp[x][i + j][2] = min(dp[x][i + j][2], dp[x][i][1] + dp[y][j][1] + len);
		dp[x][i + j][2] = min(dp[x][i + j][2], dp[x][i][0] + dp[y][j][2] + len * 2);
	}
	sz[x] += sz[y];
}
void dfs(int x, int fa) {
	sz[x] = 1;
	for (int i = head[x]; i; i = e[i].nxt) {
		int v = e[i].to;
		if (v == fa) continue;
		dfs(v, x);
		merge(x, v, e[i].w);
	}
}
signed main() {
	n = rd(), k = rd();
	rep(i, 2, n) {
		int x = rd(), y = rd(), z = rd();
		add(x, y, z), add(y, x, z);
	}
	dfs(1, 1);
	int ans = inf;
	rep(i, 1, n) if (sz[i] >= k) ans = min(ans, dp[i][k][2]);
	cout << ans;
	return 0;
}

Details

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 0ms
memory: 1192kb

input:

10 7
1 2 35129
2 3 42976
3 4 24497
2 5 83165
1 6 4748
5 7 38311
4 8 70052
3 9 3561
8 10 80238

output:

184524

result:

ok 1 number(s): "184524"

Test #2:

score: 10
Accepted
time: 27ms
memory: 1300kb

input:

3000 3000
1 2 80232
1 3 31904
1 4 24318
1 5 70898
1 6 54285
1 7 99203
1 8 36858
1 9 52269
1 10 21554...

output:

293195939

result:

ok 1 number(s): "293195939"

Test #3:

score: 10
Accepted
time: 0ms
memory: 1312kb

input:

50 32
1 2 78088
1 3 59372
2 4 12219
3 5 17188
2 6 51314
3 7 72028
3 8 1593
4 9 65442
5 10 97450
6 11...

output:

1758096

result:

ok 1 number(s): "1758096"

Test #4:

score: 10
Accepted
time: 0ms
memory: 1292kb

input:

50 48
1 2 60240
2 3 71246
3 4 21134
2 5 75461
5 6 4274
6 7 87233
6 8 74521
4 9 81504
8 10 23918
5 11...

output:

3245532

result:

ok 1 number(s): "3245532"

Test #5:

score: 10
Accepted
time: 0ms
memory: 1668kb

input:

200 36
1 2 95675
1 3 46068
3 4 92249
2 5 79443
4 6 11920
6 7 28895
4 8 25231
5 9 82622
8 10 34349
8 ...

output:

1214282

result:

ok 1 number(s): "1214282"

Test #6:

score: 10
Accepted
time: 0ms
memory: 1776kb

input:

200 35
1 2 97551
2 3 27011
2 4 14709
1 5 27407
2 6 57345
5 7 63132
7 8 89143
4 9 30986
5 10 89545
7 ...

output:

1341305

result:

ok 1 number(s): "1341305"

Test #7:

score: 10
Accepted
time: 30ms
memory: 1296kb

input:

3000 666
1 2 65806
1 3 53490
1 4 43794
1 5 63048
1 6 10670
1 7 56872
1 8 71919
1 9 78642
1 10 9831
1...

output:

14876698

result:

ok 1 number(s): "14876698"

Test #8:

score: 10
Accepted
time: 28ms
memory: 33364kb

input:

3000 1633
1 2 73534
2 3 97254
3 4 96323
4 5 88456
5 6 287
6 7 7380
7 8 63246
8 9 57273
9 10 23915
10...

output:

74678010

result:

ok 1 number(s): "74678010"

Test #9:

score: 10
Accepted
time: 25ms
memory: 1548kb

input:

3000 2612
1 2 85560
1 3 99187
1 4 40779
1 5 70190
1 6 50395
1 7 9810
1 8 87504
1 9 600
1 10 78858
1 ...

output:

231082152

result:

ok 1 number(s): "231082152"

Test #10:

score: 10
Accepted
time: 28ms
memory: 26840kb

input:

3000 858
1 2 51625
1 3 28801
1 4 85825
3 5 92506
5 6 76389
4 7 74801
3 8 49889
6 9 81981
9 10 73122
...

output:

38161665

result:

ok 1 number(s): "38161665"

Extra Test:

score: 0
Extra Test Passed