先看题目,问的是可以结束漫步的节点数量,一般就是用DFS暴力搜,用vis记录访问过的节点,再动态求数量,此处说可以经过重复节点,所以不能用此方法。
做题要认真,先看数据切入:
40%的数据n≤10³,说明可以用n²暴力做
此题最大输入个数为2×1e5,为了让时间更短,我们使用手写快速读
于是就有了10分代码
而满分代码就需要一点推理
注意到:样例的输出为一个1,其余全部为节点数量-1
于是我们可以通过画图,找到一些规律:
当两个节点间对的距离为奇数(即边数)那么就不满足条件;而当节点间的距离为偶数,那么计数器加加。
所以我们可以将本题看成是树上的染色问题,将树上的节点看成两类,一类为1,另一类为0,如果这个点的颜色为0,那么输出cnt0;如果为1,那就输出cnt1。
满分代码