CF764 C. Timofey and a tree(dfs序+线段树)

博客介绍了如何解决一类树形问题,即在树中寻找一个节点作为根,使得每个子树内所有节点颜色相同。通过参考BZOJ3306题目的解法,博主提出了修改代码的思路,具体方法是对每个节点进行遍历,判断以该节点为根时子树颜色最大值与最小值是否相等,相等则说明找到了符合条件的节点。
摘要由CSDN通过智能技术生成

传送门


题目大意:给一棵树,树上每个节点都有颜色,现在要求将某一个点变成根,使得每个子树上的所有点颜色相同,(根的颜色可不管,根的子树与子树间颜色可不同,但同一个 子树颜色必须相同)问能否找到这样的点,若有则输出这个点。


解题思路1:换根,就想到了BZOJ3306,百度了一份代码直接在这上面改。

                   将每一个点都遍历一遍把它变作根,然后遍历它的子树的最大值以及最小值,若两者相等则是符合要求。


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int read()
{
    int x=0,f=1;
    char ch=get
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值