题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6060   多校的题目,每次只能写两道SB题,剩下的要么想不到,要么想到了,代码不知道怎么实现,还是写的太少。

题意:N个结点,编号1-N,然后N-1条变将各个点联通相当于一颗生成树,然后将除了1之外的点分成k块,块与块之间不能有重复的点,然后再将1放入各个块中连成一棵生成树,求所有生成树的总和最大是多少?

思路:每一块中都有1号结点,所以我们从一号结点开始遍历其他所有的结点,在此过程中,起初的N-1条边都有各自的贡献度,因为分成k块,所以每天边最多只能贡献k次,所以最终的结果就是:各条边的min(边的贡献度,k)*边的权值的总和。

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
#define N 1000005
struct Edge{
int v;
int w;
int next;
};
Edge edge[N<<];
int head[N];
int vis[N];
int cnt;
ll sum;
int n,k;
void add(int u,int v,int w)
{
edge[cnt].v=v;
edge[cnt].w=w;
edge[cnt].next=head[u];
head[u]=cnt++;
}
void dfs(int v,int u)
{
vis[v]=;
for(int i=head[v];i!=-;i=edge[i].next)
{
int uu=edge[i].v;
if(uu==u)
continue;
dfs(uu,v);
vis[v]+=vis[uu];
ll x=min(k,vis[uu]);
sum+=x*edge[i].w;
}
}
int main()
{
int u,v,w;
while(scanf("%d%d",&n,&k)!=EOF)
{
memset(head,-,sizeof(head));
memset(vis,,sizeof(vis));
cnt=;
for(int i=;i<n;i++)
{
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
add(v,u,w);
}
sum=;
dfs(,-);
printf("%lld\n",sum);
}
return ;
}

HDU-6060 RXD and dividing的更多相关文章

  1. HDU 6060 - RXD and dividing | 2017 Multi-University Training Contest 3

    /* HDU 6060 - RXD and dividing [ 分析,图论 ] | 2017 Multi-University Training Contest 3 题意: 给一个 n 个节点的树, ...

  2. HDU 6060 RXD and dividing(dfs 思维)

    RXD and dividing Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Other ...

  3. HDU 6060 RXD and dividing(思维+计算贡献值)

    http://acm.hdu.edu.cn/showproblem.php?pid=6060 题意: 给定一棵 n 个节点的树,1 为根.现要将节点 2 ~ n 划分为 k 块,使得每一块与根节点形成 ...

  4. HDU 6060 RXD and dividing(LCA)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6060 [题目大意] 给一个n个节点的树,要求将2-n号节点分成k部分, 然后将每一部分加上节点1, ...

  5. 【构造+DFS】2017多校训练三 HDU 6060 RXD and dividing

    acm.hdu.edu.cn/showproblem.php?pid=6060 [题意] 给定一棵以1为根的树,把这颗树除1以外的结点划分为k个集合(可以有空集),把1加入划分后的集合 每个集合的结点 ...

  6. 2017 Multi-University Training Contest - Team 3 hdu6060 RXD and dividing

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6060 题目: RXD and dividing Time Limit: 6000/3000 M ...

  7. hdu6060 RXD and dividing 贪心

    /** 题目:hdu6060 RXD and dividing 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6060 题意:贪心 给定一颗树,n个节点,编 ...

  8. 2017 多校3 hdu 6061 RXD and functions

    2017 多校3 hdu 6061 RXD and functions(FFT) 题意: 给一个函数\(f(x)=\sum_{i=0}^{n}c_i \cdot x^{i}\) 求\(g(x) = f ...

  9. HDU 6061 - RXD and functions | 2017 Multi-University Training Contest 3

    每次NTT都忘记初始化,真的是写一个小时,Debug两个小时- - /* HDU 6061 - RXD and functions [ NTT ] | 2017 Multi-University Tr ...

  10. HDU 6063 - RXD and math | 2017 Multi-University Training Contest 3

    比赛时候面向过题队伍数目 打表- - 看了题解发现确实是这么回事,分析能力太差.. /* HDU 6063 - RXD and math [ 数学,规律 ] | 2017 Multi-Universi ...

随机推荐

  1. RuntimeError: module compiled against API version 0xb but this version of numpy is 0xa

    两个python,一个是本机自带的,一个是anaconda.先前呢,用自带的安装了Opencv,由于自带的python,对应的numpy版本是13, 而anaconda对应的版本是12,导致impor ...

  2. ffplay流程分析

    void main() { is = stream_open(input_filename, file_iformat); } static VideoState *stream_open(const ...

  3. Iview Modal 点击确定就关闭,我想禁止关闭该怎么办呢?

    网上各种loading,不推荐.用下面的方法直接就解决了 <div slot="footer"> <Button type="text" si ...

  4. cxgrid属性说明,每次用的时候费时费力查找。

    由层得到数据表名: procedure TFB_PatientWaiting.cxgrdbtblvwGrid1DBTableView_MyPatienWaitingDblClick( Sender: ...

  5. html跳动的心实现代码

    <style>         .box{             width: 200px;             height: 400px;             positio ...

  6. HTML基本入门完成

    四. (一)丶下拉框select元素:一般可以创建单选或多选菜单.<select>与<option>一般同时使用,select代表下拉框,option代表他的每一项. 1.基本 ...

  7. HTML入门第三天

    三. 表格table(表格类数据): 1.表格标签(重中之重) 基本结构标签: <table>:定义表格区域 <tr>:定义表格的行 <td>:定义表格中的单元格 ...

  8. Java框架spring 学习笔记(五):Bean定义继承

    子 bean 的定义继承父定义的配置数据.子定义可以根据需要重写一些值,或者添加其他值. 编写HelloWorld.java package com.example.spring; public cl ...

  9. Numpy一文全了解

    1,Numpy是一个python包,它是一个由多维数组对象和处理数组的例程集合组成的库. 2.   Numpy的操作:(1)数组的算数和逻辑运算 :(2)傅里叶变换和用于图形操作  (3)与线性代数有 ...

  10. List和符号分隔的字符串互相转换

    一.将逗号分隔的字符串转换成List: 1. 使用JDK的Arrays类: import java.util.Arrays; import java.util.List; public class T ...