P1131 [ZJOI2007] 时态同步

题目描述

小 Q 在电子工艺实习课上学习焊接电路板。一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字 1,2,3⋯1,2,3⋯ 进行标号。电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何两个节点,都存在且仅存在一条通路(通路指连接两个元件的导线序列)。

在电路板上存在一个特殊的元件称为“激发器”。当激发器工作后,产生一个激励电流,通过导线传向每一个它所连接的节点。而中间节点接收到激励电流后,得到信息,并将该激励电流传向与它连接并且尚未接收到激励电流的节点。最终,激烈电流将到达一些“终止节点”――接收激励电流之后不再转发的节点。

激励电流在导线上的传播是需要花费时间的,对于每条边 �e,激励电流通过它需要的时间为 ��te​,而节点接收到激励电流后的转发可以认为是在瞬间完成的。现在这块电路板要求每一个“终止节点”同时得到激励电路――即保持时态同步。由于当前的构造并不符合时态同步的要求,故需要通过改变连接线的构造。目前小 Q 有一个道具,使用一次该道具,可以使得激励电流通过某条连接导线的时间增加一个单位。请问小 Q 最少使用多少次道具才可使得所有的“终止节点”时态同步?

输入格式

第一行包含一个正整数 �N,表示电路板中节点的个数。

第二行包含一个整数 �S,为该电路板的激发器的编号。

接下来 �−1N−1 行,每行三个整数 �,�,�a,b,t。表示该条导线连接节点 �a 与节点 �b,且激励电流通过这条导线需要 �t 个单位时间。

输出格式

仅包含一个整数 �V,为小 Q 最少使用的道具次数。

输入输出样例

输入 #1复制

3
1
1 2 1
1 3 3

输出 #1复制

2

说明/提示

  • 对于 40%40% 的数据,1≤�≤10001≤N≤1000。
  • 对于 100%100% 的数据,1≤�≤5×1051≤N≤5×105。

对于所有的数据,1≤��≤1061≤te​≤106。


Description

A国有N个城市,其中国王住在编号为S的城市中。

整个国家通过N-1条边连接起来,嗯,就是一棵树的结构了

国王有若干个儿子住在叶子城市中。

为了保护这些王子,国王在城市的连通线上安排了一些士兵。

现在为了体现他的均衡,国王决定再多派一些士兵,使得从S城出发到任一个叶子点 其路径上的士兵数量是一样的。

请问国王最少要派多少个士兵。

Format

Input

第一行给出N

第二行给出S

接下来N-1行,每行三个数字a,b,c代表a城到b城的边上有c名士兵

N ≤ 500000

c≤ 1000000

Output

如题

Samples

输入数据 1

3
1
1 2 1
1 3 3



Copy

输出数据 1

2

思路

题意让我们用最少的代价把叶子节点到根节点的距离调成相同

显然,我们调整靠近根节点的树枝,其下叶子节点距离根节点的距离都会增加,所以,调整越靠根节点的树枝调整的代价越少

为了方便作图,效果直观,在此我们用节点深度类比距离

所以我们可以先找到最深的叶子节点

再从最小的子树开始,把所有子节点调整到同一深度,再调整子树上面的树枝

理解不了的话看这个图:

这样我们就可以保证用最少的代价把所有叶子节点调整到同一深度

我们理解了这个问题就可以设计dfs了

每次调整的代价都是

sum[x] - (sum[v[x][i].x] + v[x][i].len)

把它累加即可

下面是详细代码

 代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,s,sum[5000001],ans,x,y,t;
struct node
{
	int x,len;
};
vector<node> v[5000001];
void dfs(int x,int fa)
{
	for(int i = 0;i < v[x].size();i++)
		if(v[x][i].x != fa)
    {
			dfs(v[x][i].x,x);
      sum[x] = max(sum[x],sum[v[x][i].x] + v[x][i].len);
    }
  for(int i = 0;i < v[x].size();i++)
		if(v[x][i].x != fa)
			ans += sum[x] - (sum[v[x][i].x] + v[x][i].len);
}
signed main()
{
	cin>>n>>s;
	for(int i = 1;i < n;i++)
	{
    cin>>x>>y>>t;
		v[x].push_back({y,t});
		v[y].push_back({x,t});
	}
	dfs(s,0);
	cout<<ans;
	return 0;
}

结语

如果这篇博客对您有帮助的话,请点赞收藏关注支持一下吖!(´▽`ʃ♡ƪ) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/374125.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

回归预测 | Matlab实现OOA-CNN-LSTM-Attention鱼鹰算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制)

回归预测 | Matlab实现OOA-CNN-LSTM-Attention鱼鹰算法优化卷积长短期记忆网络注意力多变量回归预测&#xff08;SE注意力机制&#xff09; 目录 回归预测 | Matlab实现OOA-CNN-LSTM-Attention鱼鹰算法优化卷积长短期记忆网络注意力多变量回归预测&#xff08;SE注意力机制&…

若依整合mybatis-plus

文章目录 1.注释掉原本的MybatisConfig2. 将mybatis的配置文件改为mybatis-plus文件 ##前言 出先下列异常&#xff1a; 请求地址’/prod-api/user’,发生未知异常. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ruoyi.web.mapper.Us…

PHP客服系统-vue客服聊天系统

PHP-Vue客服聊天系统是一款高效、灵活的客户服务解决方案&#xff0c;基于ThinkPHP6、Vue3和Workerman(Gateworker)框架开发&#xff0c;专为单商户场景打造。 系统亮点&#xff1a; 分布式部署支持&#xff0c;轻松应对高并发场景&#xff1b;本地消息存储功能&#xff0c;确…

js中typeof 与 instanceof 的区别

文章目录 一、typeof二、instanceof三、区别 一、typeof typeof 操作符返回一个字符串&#xff0c;表示未经计算的操作数的类型 使用方法如下&#xff1a; typeof operand typeof(operand)operand表示对象或原始值的表达式&#xff0c;其类型将被返回 举个例子&#xff1a;…

网络爬虫,使用存放在C的谷歌驱动报错

月 06, 2024 11:43:40 上午 org.openqa.selenium.os.OsProcess checkForError 严重: org.apache.commons.exec.ExecuteException: Execution failed (Exit value: -559038737. Caused by java.io.IOException: Cannot run program "C:\chromedriver121.exe" (in dir…

nvm安装node后,npm无效

类似报这种问题&#xff0c;是因为去github下载npm时下载失败&#xff0c; Please visit https://github.com/npm/cli/releases/tag/v6.14.17 to download npm. 第一种方法&#xff1a;需要复制这里面的地址爬梯子去下载&#xff08;github有时不用梯子能直接下载&#xff0c;有…

远程主机可能不符合 glibc 和 libstdc++ Vs Code 服务器的先决条件

vscode连接远程主机报错&#xff0c;原因官方已经公布过了&#xff0c;需要远程主机 glibc>2.28&#xff0c;所以Ubuntu18及以下版本没法再远程连接了&#xff0c;其他Linux系统执行ldd --version查看glibc版本自行判断。 解决方案建议&#xff1a; 不要再想升级glibc了 问题…

完全背包理论基础 C++力扣题目518--零钱兑换II

动态规划&#xff1a;完全背包理论基础 本题力扣上没有原题&#xff0c;大家可以去卡码网第52题 (opens new window) #思路 #完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff0…

华为环网双机接入IPTV网络部署案例

环网双机接入IPTV网络部署案例 组网图形 图2 环网双机场景IPTV基本组网图 方案简介配置注意事项组网需求数据规划配置思路操作步骤配置文件 方案简介 随着IPTV业务的迅速发展&#xff0c;IPTV平台承载的用户也越来越多&#xff0c;用户对IPTV直播业务的可靠性要求越来越高。…

C++泛编程(4)

类模板高级&#xff08;1&#xff09; 1.类模板具体化部分具体化完全具体化 2.类模板与继承 1.类模板具体化 有了函数模板具体化的基础&#xff0c;学习类模板的具体化很简单。类模板具体化有两种方式&#xff0c;分别为部分具体化和完全具体化。假如有类模板&#xff1a; te…

ywtool inspect命令

一.巡检介绍 日巡检是通过定时任务每天凌晨2点30进行巡检周巡检时通过定时任务每周日的凌晨3点进行巡检日巡检内容: (1)系统信息检查(2)网络检查(3)CPU检查(4)内存检查(5)硬盘检查(6)服务检查(7)昨天登陆成功主机记录(8)JDK检查(9)NTP检查(10)syslog检查(11)SNMP检查(12)SSH检…

低代码与MES系统相结合

​低代码平台通常是指aPaaS平台&#xff0c;通过为开发者提供可视化的应用开发环境&#xff0c;降低或去除应用开发对原生代码编写的需求量&#xff0c;进而实现便捷构建应用程序的一种解决方案。 更加简单点的理解就是“拖拽&#xff01;搭建应用”。 一、低代码开发平台概述 …

使用 Python、Elasticsearch 和 Kibana 分析波士顿凯尔特人队

作者&#xff1a;来自 Jessica Garson 大约一年前&#xff0c;我经历了一段压力很大的时期&#xff0c;最后参加了一场篮球比赛。 在整个过程中&#xff0c;我可以以一种我以前无法做到的方式断开连接并找到焦点。 我加入的第一支球队是波士顿凯尔特人队。 波士顿凯尔特人队是…

【Web】小白也能看懂的BeginCTF个人wp(全)

纯萌新&#xff0c;贴出自己的wp&#xff0c;一起交流学习QWQ 目录 zupload zupload-pro zupload-pro-plus zupload-pro-plus-max zupload-pro-plus-max-ultra zupload-pro-plus-max-ultra-premium zupload-pro-revenge zupload-pro-plus-enhanced POPgadget sql教…

ant-design-vue表格嵌套子表格,实现子表格有数据才显示左侧加号图标

ant-design-vue表格嵌套子表格&#xff0c;实现子表格有数据才显示左侧加号图标 通过使用插槽的方式&#xff0c;以下为全部项目的代码&#xff0c;关键的代码就两块&#xff0c;看注释 <template><a-card><a-form class"kit_form" ref"formRef…

(已解决)vue+element-ui实现个人中心,仿照原神

差一个个人中心页面&#xff0c;看到了这个博主的个人中心&#xff0c;真的很不错 地址&#xff1a;vueelement仿原神实现好看的个人中心 最终效果&#xff1a;

15.1 项目实践_OA系统

15.1 项目实践_OA系统 1. 需求说明及环境准备1.1 需求说明1.2 环境准备1.3 开发模式_MVC架构模式2. 关键代码解析2.1 整合MyBatis1. 依赖2. 配置mybatis-config.xml3. Mybatis工具类2.2 RBAC2.3 用户登录1. 需求说明及环境准备 1.1 需求说明

RBAC的权限解决方案(思路)

RBAC全称&#xff1a;role based access control&#xff0c;基于角色的权限控制方案 核心思路&#xff1a;给角色分配功能权限&#xff0c;把角色分配给员工&#xff0c;那员工就自动拥有了角色下面的所有功能权限 菜单路由权限控制&#xff1a;不同角色的员工进入到系统中看到…

MySQL知识点总结(四)——MVCC

MySQL知识点总结&#xff08;四&#xff09;——MVCC 三个隐式字段row_idtrx_idroll_pointer undo logread viewMVCC与隔离级别的关系快照读和当前读 MVCC全称是Multi Version Concurrency Control&#xff0c;也就是多版本并发控制。它的作用是提高事务的并发度&#xff0c;通…

Axure 动态面板初使用 - 实现简单的Banner图轮播效果

实现简单的Banner图轮播效果 使用工具版本实现的效果步骤过程 使用工具版本 Axure 9 实现的效果 步骤过程 1、打开Axure工具&#xff0c;从元件库拖个动态面板到空白页&#xff1b; 2、给面板设置一个常用的banner尺寸&#xff0c;举个栗子&#xff1a;343151(移动端我常用…
最新文章