A6292 | Welcome24ever 和电路板
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
Welcome24ever 在电子工艺实习课上学习焊接电路板。一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字 $1,2,3,\dots$ 进行标号。电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何两个节点,都存在且仅存在一条通路(通路指连接两个元件的导线序列),也就是说这些节点构成一棵树。
在电路板上存在一个特殊的元件,称为「激发器」,它的编号为 $S$。当激发器工作后,产生一个激励电流,通过导线传向每一个它所连接的节点。中间节点接收到激励电流后,得到信息,并会立刻将激励电流传向与它连接且尚未接收到激励电流的节点。最终,激励电流将到达一些「终止节点」——接收激励电流之后不再转发的节点(在树上就是那些叶子结点)。
激励电流在导线上的传播需要花费时间。对于每条边 $e$,激励电流通过它需要的时间为 $t_e$,而节点接收到激励电流后的转发可以认为在瞬间完成。
现在要求:所有的终止节点必须同时接收到激励电流,即保持时态同步。由于当前构造并不满足这一要求,需要通过改变连接线的构造来调整。
Welcome24ever 有一个道具,使用一次该道具,可以使得激励电流通过某一条导线的时间增加 $1$ 个单位(可以对同一条导线多次使用)。问:最少需要使用多少次道具,才能使所有终止节点都在同一时刻收到激励电流?
在电路板上存在一个特殊的元件,称为「激发器」,它的编号为 $S$。当激发器工作后,产生一个激励电流,通过导线传向每一个它所连接的节点。中间节点接收到激励电流后,得到信息,并会立刻将激励电流传向与它连接且尚未接收到激励电流的节点。最终,激励电流将到达一些「终止节点」——接收激励电流之后不再转发的节点(在树上就是那些叶子结点)。
激励电流在导线上的传播需要花费时间。对于每条边 $e$,激励电流通过它需要的时间为 $t_e$,而节点接收到激励电流后的转发可以认为在瞬间完成。
现在要求:所有的终止节点必须同时接收到激励电流,即保持时态同步。由于当前构造并不满足这一要求,需要通过改变连接线的构造来调整。
Welcome24ever 有一个道具,使用一次该道具,可以使得激励电流通过某一条导线的时间增加 $1$ 个单位(可以对同一条导线多次使用)。问:最少需要使用多少次道具,才能使所有终止节点都在同一时刻收到激励电流?
输入格式
第一行包含一个正整数 $N$,表示电路板中节点的个数。
第二行包含一个整数 $S$,表示激发器的编号。
接下来 $N-1$ 行,每行包含三个整数 $a, b, t$,表示存在一条导线连接节点 $a$ 和节点 $b$,且激励电流通过这条导线需要 $t$ 个单位时间。
保证这些节点和导线构成一棵树。
第二行包含一个整数 $S$,表示激发器的编号。
接下来 $N-1$ 行,每行包含三个整数 $a, b, t$,表示存在一条导线连接节点 $a$ 和节点 $b$,且激励电流通过这条导线需要 $t$ 个单位时间。
保证这些节点和导线构成一棵树。
输出格式
输出一个整数 $V$,表示 Welcome24ever 最少需要使用道具的次数。
输入输出样例
输入 #1
3 1 1 2 1 1 3 3
输出 #1
2
在样例中,以节点 1 为激发器:
- 到节点 2 的时间为 1;
- 到节点 3 的时间为 3。
- 对于 $100\%$ 的数据,$1\le N\le 5\times 10^5$。
- 对于所有的数据,$1\le t_e\le 10^6$。
可以将边 $(1,2)$ 的时间从 1 增加到 3,一共增加 2 个单位时间。此时两个终止节点 2 和 3 都在时间 3 收到激励电流,实现时态同步,且这是最少的代价。
说明/提示
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?