10156. 「一本通 5.2 例 4」战略游戏

题意

有一座古城堡,里面的路形成一棵树, 某个士兵在一个节点上时,与该节点相连的所有边都将能被瞭望到。问最少需要多少士兵才可以使所有的路都被瞭望到。 输入数据表示一棵树,描述如下。 第一行一个数 $N$ ,表示树中节点的数目。 第二到第 $N+1$ 行,每行描述每个节点信息,依次为该节点编号 $i$,数值 $k$,$k$ 表示后面有 $k$ 条边与节点 $i$ 相连,接下来 $k$ 个数,分别是每条边的所连节点编号 $r_1,r_2,\cdots ,r_k$。 对于一个有 $N$ 个节点的树,节点标号在 $0$ 到 $N-1$ 之间,且在输入文件中每条边仅出现一次。

思路

设$f[x][0]$表示第$i$个节点不放士兵,以$x$节点为根节点的子树所需要士兵的最少数量。 设$f[x][1]$表示第$i$个节点放士兵,以$x$节点为根节点的子树所需要士兵的最少数量。 那么有: $$f[x][0]=\sum{f[y][1],y∈x的儿子}$$ $$f[x][1]=1+\sum{min(f[y][0],f[y][1]),y∈x的儿子}$$ 那么这个问题就愉快的解决了。
暂无评论

发送评论


				
上一篇
下一篇