最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

信息学奥赛题库- 【例 4】战略游戏

C++ 少儿编程 1266浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

【题目描述】

Bob 喜欢玩电脑游戏,特别是战略游戏。但是他经常无法找到快速玩过游戏的方法。现在他有个问题。

现在他有座古城堡,古城堡的路形成一棵树。他要在这棵树的节点上放置最少数目的士兵,使得这些士兵能够瞭望到所有的路。

注意:某个士兵在一个节点上时,与该节点相连的所有边都将能被瞭望到。

请你编一个程序,给定一棵树,帮 Bob 计算出他最少要放置的士兵数。

【输入】

输入数据表示一棵树,描述如下。

第一行一个数 $N$ ,表示树中节点的数目。

第二到第 $N+1$ 行,每行描述每个节点信息,依次为该节点编号 $i$,数值 $k$,$k$ 表示后面有 $k$ 条边与节点 $i$ 相连,接下来 $k$ 个数,分别是每条边的所连节点编号 $r_1,r_2,cdots ,r_k$ 。

对于一个有 $N$ 个节点的树,节点标号在 $0$ 到 $N-1$ 之间,且在输入文件中每条边仅出现一次。

【输出】

输出仅包含一个数,为所求的最少士兵数。

【输入样例】

4
0 1 1
1 2 2 3
2 0
3 0

【输出样例】

1

【提示】

数据范围与提示:

对于 100% 的数据,有 $0<N≤1500$。

您必须 登录 才能发表评论!