警卫安排(security.pas/c/cpp)
一个重要的基地被分为n 个连通的区域。出于某种神秘的原因,这些区域以一个区域为
核心,呈一颗树形分布。
在每个区域安排警卫所需要的费用是不同的,而每个区域的警卫都可以望见其相邻的区
域,只要一个区域被一个警卫望见或者是安排有警卫,这个区域就是安全的。你的任务是:
在确保所有区域都是安全的情况下,找到安排警卫的最小费用。
输入数据
第一行n,表示树中结点的数目。
接下来的 n 行描述了 n 个区域的信息,每一行包含的整数依次为:区域的标号
i(0<i<=n),在区域i 安排警卫的费用k,区域i 的子结点数目m,接下来m 个数为区域i
的子结点编号。
输出数据
一行一个整数,为最小的安排费用。
样例输入与输出
6
1 30 3 2 3 4
2 16 2 5 6
3 5 0
4 4 0
5 11 0
6 5 0
25
数据范围
一个重要的基地被分为n 个连通的区域。出于某种神秘的原因,这些区域以一个区域为
核心,呈一颗树形分布。
在每个区域安排警卫所需要的费用是不同的,而每个区域的警卫都可以望见其相邻的区
域,只要一个区域被一个警卫望见或者是安排有警卫,这个区域就是安全的。你的任务是:
在确保所有区域都是安全的情况下,找到安排警卫的最小费用。
输入数据
第一行n,表示树中结点的数目。
接下来的 n 行描述了 n 个区域的信息,每一行包含的整数依次为:区域的标号
i(0<i<=n),在区域i 安排警卫的费用k,区域i 的子结点数目m,接下来m 个数为区域i
的子结点编号。
输出数据
一行一个整数,为最小的安排费用。
样例输入与输出
6
1 30 3 2 3 4
2 16 2 5 6
3 5 0
4 4 0
5 11 0
6 5 0
25
数据范围
对于所有的数据,0<n<=720。
-------------------------------------------------------------------------------------------------------------------
很经典的树