题目名称 1185. 信号放大器
输入输出 booster.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 9
题目来源 Gravatar王者自由 于2012-10-19加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:0, 提交:3, 通过率:0%
Gravatarh 44 0.019 s 3.72 MiB C++
Gravatarzhengtn03 44 0.025 s 1.84 MiB C++
Gravatardoriko 44 0.036 s 4.87 MiB Pascal
关于 信号放大器 的近10条评论(全部评论)
数据好像有错
Gravatarh
2017-06-30 18:46 1楼

1185. 信号放大器

★   输入文件:booster.in   输出文件:booster.out   简单对比
时间限制:1 s   内存限制:128 MiB


【问题描述】

树型网络是最节省材料的网络。所谓树型网络,是指一个无环的连通网络,网络中任意两个结点间有且仅有一条通信道路。

网络中有一个结点是服务器,负责将信号直接或间接地发送到各终端机。如图6-4server结点发出一个信号给结点aca再转发给b。如此,整个网络都收到这个信号了。

server            a          b
   ●-------------○----------○
   │
   │
   ○

但是,实际操作中,信号从一个结点发到另一个结点,会出现信号强度的衰减。衰减量一般由线路长度决定。

server       3    a    2     b
   ●-------------○----------○
   │
   │1
   ○

如上图,边上所标的数字为边的衰减量。假设从server出发一个强度为4个单位的信号,发到结点a后强度衰减为4-3=1个单位。结点a再将其转发给结点b。由于信号强度为1,衰减量为2,因此信号无法发送到b

一个解决这一问题的方法是,安装信号放大器。信号放大器的作用是将强度大于零的信号还原成初始强度(从服务器出发时的强度)。

上图中,若在结点a处安装一个信号放大器,则强度为4的信号发到a处,即被放大至4。这样,信号就可以被发送的网络中的任意一个节点了。为了简化问题,我们假定每个结点只处理一次信号,当它第二次收到某个信号时,就忽略此信号。

你的任务是根据给出的树型网络,计算出最少需要安装的信号放大器数量。

【输入】

第一行一个整数n,表示网络中结点的数量。(n<=100000

2~n+1行,每行描述一个节点的连接关系。其中第i+1行,描述的是结点i的连接关系:首先一个整数k,表示与结点i相连的结点的数量。此后2k个数,每两个描述一个与结点i相连的结点,分别表示结点的编号(编号在1~n之间)和该结点与结点i之间的边的信号衰减量。结点1表示服务器。

最后一行,一个整数,表示从服务器上出发信号的强度。

【输出】

一个整数,表示要使信号能够传遍整个网络,需要安装的最少的信号放大器数量。

如果不论如何安装信号放大器,都无法使信号传遍整个网络,则输出“No solution.

【样例】

booster.in              booster.out

4                       1

2 2 3 3 1

2 1 3 4 2

1 1 1

1 2 2

4