ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#200426 | #197. tree | Anonyme | 100 | 589ms | 283968kb | C++11 | 2.0kb | 2024-01-02 08:55:47 | 2024-01-02 12:26:23 |
answer
#include<bits/stdc++.h>
using namespace std;
#define QwQ330AwA return 0
#define ll long long
const int N = 3005 + 5;
int n, k;
vector < pair <int, int> > e[N];
ll f[N][N][4], g[N][4];
int siz[N];
void ckmin(ll &u, ll v) {
u = min(u, v);
}
ll merge(ll u, ll v, ll a) {
return u + v + a;
}
void dfs(int u, int fa) {
for (int i = 0; i <= n; i++) {
for (int op = 0; op < 4; op++) f[u][i][op] = 1e18;
}
f[u][0][0] = 0;
f[u][1][1] = 0;
f[u][1][2] = 0;
siz[u] = 1;
for (auto qwq : e[u]) {
int v = qwq.first, w = qwq.second;
if (v == fa) continue;
dfs(v, u);
for (int i = 0; i <= siz[u] + siz[v]; i++) {
for (int j = 0; j < 4; j++) {
g[i][j] = 1e18;
}
}
for (int i = 0; i <= siz[u]; i++) {
for (int j = 0; j <= siz[v]; j++) {
ckmin(g[i + j][0], merge(f[u][i][0], f[v][j][0], 0));
ckmin(g[i + j][1], merge(f[u][i][1], f[v][j][0], 0));
ckmin(g[i + j][1], merge(f[u][i][0], f[v][j][1], 2 * w));
ckmin(g[i + j][1], merge(f[u][i][1], f[v][j][1], 2 * w));
ckmin(g[i + j][2], merge(f[u][i][0], f[v][j][2], w));
ckmin(g[i + j][2], merge(f[u][i][1], f[v][j][2], w));
ckmin(g[i + j][2], merge(f[u][i][2], f[v][j][1], 2 * w));
ckmin(g[i + j][2], merge(f[u][i][2], f[v][j][0], 0));
ckmin(g[i + j][3], merge(f[u][i][2], f[v][j][2], w));
ckmin(g[i + j][3], merge(f[u][i][3], f[v][j][0], 0));
ckmin(g[i + j][3], merge(f[u][i][3], f[v][j][1], 2 * w));
ckmin(g[i + j][3], merge(f[u][i][0], f[v][j][3], 2 * w));
ckmin(g[i + j][3], merge(f[u][i][1], f[v][j][3], 2 * w));
}
}
siz[u] += siz[v];
for (int i = 0; i <= siz[u]; i++) {
for (int j = 0; j< 4; j++) f[u][i][j] = g[i][j];
}
}
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> k;
for (int i = 1, u, v, w; i < n; i++) {
cin >> u >> v >> w;
e[u].push_back({v, w});
e[v].push_back({u, w});
}
dfs(1, 0);
ll ans = 1e18;
for (int i = 1; i <= n; i++) ans = min(ans, f[i][k][3]);
cout << ans;
QwQ330AwA;
}
Details
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 0ms
memory: 1368kb
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 single line: '184524'
Test #2:
score: 10
Accepted
time: 92ms
memory: 283736kb
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 single line: '293195939'
Test #3:
score: 10
Accepted
time: 0ms
memory: 1612kb
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 single line: '1758096'
Test #4:
score: 10
Accepted
time: 0ms
memory: 1612kb
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 single line: '3245532'
Test #5:
score: 10
Accepted
time: 0ms
memory: 3388kb
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 single line: '1214282'
Test #6:
score: 10
Accepted
time: 0ms
memory: 3396kb
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 single line: '1341305'
Test #7:
score: 10
Accepted
time: 206ms
memory: 283736kb
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 single line: '14876698'
Test #8:
score: 10
Accepted
time: 159ms
memory: 283968kb
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 single line: '74678010'
Test #9:
score: 10
Accepted
time: 61ms
memory: 283740kb
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 single line: '231082152'
Test #10:
score: 10
Accepted
time: 71ms
memory: 283884kb
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 single line: '38161665'