HDU 6060 - RXD and dividing | 2017 Multi-University Training Contest 3
2017-08-02 20:15
344 查看
/* HDU 6060 - RXD and dividing [ 分析,图论 ] | 2017 Multi-University Training Contest 3 题意: 给一个 n 个节点的树,要求将 2-n 号节点分成 k 部分,然后将每一部分加上节点 1, 每一个子树的 val 为最小斯坦纳树,求总的最大 val 分析: 考虑每条边下面所在的子树,大小为num 由于该子树至多被分成 k 块,故该边最多贡献 k 次,贡献次数当然是越多越好 所以每条边的贡献为 w * min(k, num) */ #include <bits/stdc++.h> using namespace std; const int N = 1000005; #define LL long long struct Edge { int to, w, next; }edge[N<<1]; int head , tot; void init() { memset(head, -1, sizeof(head)); tot = 0; } void addedge(int u, int v, int w) { edge[tot].to = v; edge[tot].w = w; edge[tot].next = head[u]; head[u] = tot++; } int sum , w ; int dfs(int u, int pre) { sum[u] = 1; for (int i = head[u]; i != -1; i = edge[i].next) { int v = edge[i].to; if (v == pre) continue; sum[u] += dfs(v, u); w[v] = edge[i].w; } return sum[u]; } int k, n; int main() { while (~scanf("%d%d", &n, &k)) { init(); int a, b, c; for (int i = 1; i < n; i++) { scanf("%d%d%d", &a, &b, &c); addedge(a, b, c); addedge(b, a, c); } dfs(1, 1); LL ans = 0; for (int i = 2; i <= n; i++) { ans += (LL)min(sum[i], k) * w[i]; } printf("%lld\n", ans); } }
相关文章推荐
- HDU-6060 RXD and dividing - 2017 Multi-University Training Contest - Team 3(思维+最小斯坦纳树)
- 2017 Multi-University Training Contest 3( hdu 6060) RXD and dividing
- (hdu 6078)2017 Multi-University Training Contest - Team 4 Wavel Sequence
- HDU 6034 & 2017 Multi-University Training Contest - Team 1
- HDU-6034 Balala Power! - 2017 Multi-University Training Contest - Team 1(贪心)
- hdu 6034 Balala Power!(贪心)( 2017 Multi-University Training Contest - Team 1 )(无耻之sort)
- HDU 6093 - Rikka with Number | 2017 Multi-University Training Contest 5
- hdu 6040 Hints of sd0061[2017 Multi-University Training Contest - Team 1] [STL]
- 2017 Multi-University Training Contest - Team 1:KazaQ's Socks(hdu 6043)
- hdu 6034 Balala Power! (2017 Multi-University Training Contest - Team 1)
- hdu 6047 Maximum Sequence(2017 Multi-University Training Contest - Team 2)
- hdu 6045 Is Derek lying?(2017 Multi-University Training Contest - Team 2)
- HDU-6178 Monkeys - 2017 Multi-University Training Contest - Team 10(树形DP)
- hdu 6055 Regular polygon(判断正方形)(2017 Multi-University Training Contest - Team 2)
- HDU 6055 Regular polygon(计算几何+思维)——2017 Multi-University Training Contest - Team 2
- HDU-6040 Hints of sd0061 - 2017 Multi-University Training Contest - Team 1(快排思想STL应用)
- HDU-6103 Kirinriki - 2017 Multi-University Training Contest - Team 6(尺取)
- HDU_【2017 Multi-University Training Contest 2】——1001 Is Derek lying?
- 2017 Multi-University Training Contest - Team 1(hdu 6038 Function)
- HDU_【2017 Multi-University Training Contest 2】——1003 Maximum Sequence