题意简述
给定一颗无根树,每个点有颜色,请确定一个点,使得以这个点为根,则所有子树中都是一个颜色。为防歧义,良心插图。
如图:
思路
设为满足链接的两个点颜色不一样的边(简称“异色边”)的个数。找到一个点,使得这个点连出去的异色边数量,那么这个点就是我们要找的根。否则就没有这样的根。
具体思路
这个题还是很巧妙的,如果第一次做完全不会想到。别急,慢慢分析。
如右图,设我们要选的点是点。的定义同“思路”中的定义。那么,我们会发现,由于子树中的颜色都是一样的,所以异色边仅有在和儿子的连边中出现。所以,如果有一个满足条件的,那么这个点连出去的异色边的数量肯定就等于全局的异色边数量。
实现注意
由于我们只需要遍历边,所以只要开一个数组存下来边即珂。
代码
1 |
|