测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A6291. 保安站岗

编程题 普及+/提高
知识点

题目描述

五一来临,某地下超市为了便于疏通和指挥密集的人员和车辆,以免造成超市内的混乱和拥挤,准备临时从外单位调用部分保安来维持交通秩序。

已知整个地下超市的所有通道呈一棵树的结构;某些通道之间可以互相望见。总经理要求所有通道的每个端点(也就是树的每个结点)都要有人全天候看守。在不同的通道端点安排保安所需的费用不同。

一个保安一旦站在某条通道的一个端点上,那么他除了能看守住他所站的那个端点外,也能看到这条通道的另一个端点。所以一个保安可能同时看守多个端点,因此没有必要在每个通道的端点都安排保安。

你的任务是:在保证所有结点都被看守到的前提下,使安排保安的总费用最小。

输入格式

第 1 行:一个整数 $n$,表示树中结点的数目。

接下来第 2 行至第 $n+1$ 行,每行描述一个结点的信息,格式为:

> $i\ k\ m\ r_1\ r_2\ \dots\ r_m$

含义为:

- $i$:结点编号($0 < i \le n$,编号不重复);
- $k$:在该结点安置一个保安所需的费用($1 \le k \le 10000$);
- $m$:该结点的儿子个数;
- 接下来 $m$ 个数 $r_1, r_2, \dots, r_m$:该结点的 $m$ 个儿子的编号。

整棵树有 $n$ 个结点,结点编号在 $1$ 到 $n$ 之间。

输出格式

输出一行一个整数,表示在能看守所有结点的前提下所需的最小总费用。

输入输出样例

输入 #1
6
1 30 3 2 3 4
2 16 2 5 6
3 5 0
4 4 0
5 11 0
6 5 0
输出 #1
25

说明/提示

## 说明/提示

样例中,选择在结点 2、3、4 安置保安,可以看守所有 6 个结点,且总费用为 $16 + 5 + 4 = 25$,是最小方案。

- 对于所有数据,$0 < n \le 1500$;
- 结点费用 $1 \le k \le 10000$。
上一题 去做题 下一题