博客
关于我
2019牛客国庆集训派对day4H题
阅读量:653 次
发布时间:2019-03-15

本文共 570 字,大约阅读时间需要 1 分钟。

题目链接:

题意:

给一棵带边权的树,现在要求新建一棵树,新树里(u,v)的边权等于原树中(u,v)的唯一路径的距离。

现在要你找出最大的花费来建造这颗新树。

题解:

很容易知道这个题的求出这个树的两个直径端点,其他每个点到这两个端点的最大距离和就是答案。

之后就是求该树的直径端点,关于这个算法有两种经典的做法,bfs和树形dp,

这里用的是三次dfs,写起来比较简单,在dfs求两个端点的同时更新每个点到端点的距离就行了。

#include 
using namespace std;typedef long long ll;const int maxn=1e5+10;const ll INF=0x3f3f3f3f3f3f3f3fll;vector
>G[maxn];int visited[maxn];ll dist=-INF;int point;ll res[3][maxn];int n;void dfs(int x,ll dis,int index){ if(index) res[index][x]=dis; if(dis>dist){ dist=dis; point=x; } int size=G[x].size(); for(int i=0;i

 

转载地址:http://pzfmz.baihongyu.com/

你可能感兴趣的文章
mysql 排序id_mysql如何按特定id排序
查看>>
Mysql 提示:Communication link failure
查看>>
mysql 插入是否成功_PDO mysql:如何知道插入是否成功
查看>>
Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log
查看>>
mysql 数据库中 count(*),count(1),count(列名)区别和效率问题
查看>>
mysql 数据库备份及ibdata1的瘦身
查看>>
MySQL 数据库备份种类以及常用备份工具汇总
查看>>
mysql 数据库存储引擎怎么选择?快来看看性能测试吧
查看>>
MySQL 数据库操作指南:学习如何使用 Python 进行增删改查操作
查看>>
MySQL 数据库的高可用性分析
查看>>
MySQL 数据库设计总结
查看>>
Mysql 数据库重置ID排序
查看>>
Mysql 数据类型一日期
查看>>
MySQL 数据类型和属性
查看>>
mysql 敲错命令 想取消怎么办?
查看>>
Mysql 整形列的字节与存储范围
查看>>
mysql 断电数据损坏,无法启动
查看>>
MySQL 日期时间类型的选择
查看>>
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>