hdu6060 RXD and dividing
来源:互联网 发布:辉素网络带练真的假的 编辑:程序博客网 时间:2024/06/02 00:31
题意:将节点2到n分成k部分,然后对于每一部分都加上1号节点。在原图中选取一些边,让这一部分内部联通。问怎么分能使花费最大。
分析:如果一个点的子节点被分成各个部分,那么从它走到1号节点的部分就会走k遍,所以尽量让一个节点的子节点分成更多的部分。
#include<cstdio>#include<queue>#include<cstring>#include<algorithm>#include<vector>using namespace std;typedef long long ll;const int N = 1e6 + 10;vector<int> a[N];vector<ll> p[N];ll num[N], ans;ll n, m, s;void dfs(int k, ll d){ for(int i = 0; i < a[k].size(); i++){ dfs(a[k][i], p[k][i]); num[k] += num[a[k][i]]; } num[k] += 1; ans += min(num[k], s) * d;}int main(){ while(~scanf("%lld%lld", &n, &s)){ ans = 0; memset(num, 0, sizeof(num)); for(int i = 0; i < N; i++){ a[i].clear(); p[i].clear(); } for(int i = 1; i < n; i++){ ll x, y, w; scanf("%lld%lld%lld", &x, &y, &w); a[x].push_back(y); p[x].push_back(w); } dfs(1, 0); printf("%lld\n", ans); }}
阅读全文
0 0
- HDU6060-RXD and dividing
- HDU6060 RXD and dividing
- hdu6060 RXD and dividing
- hdu6060 RXD and dividing
- HDU6060-RXD and dividing
- hdu6060 RXD and dividing
- hdu6060 RXD and dividing
- 【HDU6060】RXD and dividing(dfs)
- HDU6060 RXD and dividing【DFS】
- 多校3 hdu6060 RXD and dividing
- Hdu6060 RXD and dividing(2017多校第3场)
- hdu6060-思维&搜索&好题-RXD and dividing
- HDU6060-RXD and dividing 简单树形DP+贪心
- 2017多校训练Contest3: 1005 RXD and dividing hdu6060
- 2017杭电多校联赛第三场-RXD and dividing (hdu6060)最小生成树
- RXD and dividing
- RXD and dividing
- RXD and dividing
- NYOJ 128 前缀式计算
- 关于spring中的注解问题
- Xmarin.Forms 基础——Behaviors
- 【深度学习】【caffe实用工具3】笔记25 Windows下caffe中将图像数据集合转换为DB(LMDB/LEVELDB)文件格式之convert_imageset
- HTTP请求json文件出现中文乱码的解决方案
- hdu6060 RXD and dividing
- 详解 pkg-config 作用
- Django-CBV和FBV
- java.lang.ClassNotFoundException怎么解决
- linux初学者-DDNS配置篇
- 与函数有关面试题(一)
- ClassLoader之热修复
- Python装饰器
- Xamrin.Forms 基础——Behaviors——介绍