题目简化和分析:

求一颗子树的黑白两数是否相等。

我们设黑 \(1\),白 \(-1\),若某一棵子树的权值为 \(0\),说明此刻的黑白个数相等,贡献加一。

从根搜索,每次将值传递给父亲,判断父亲此时的权值。

Solution:

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef double db; const int N=4e3+50;
const int M=1e5+50;
const int Mod=1e9+7; inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
} int t,n;
int ans;
int c[N],si[N];
vector<int>tree[N]; void dfs(int u,int p){
si[u]=c[u];
for(int v=0;v<(int)tree[u].size();++v){
if(tree[u][v]==p) continue;
dfs(tree[u][v],u);
si[u]+=si[tree[u][v]];
}
if(si[u]==0) ans++;
}
int main()
{
scanf("%d",&t);
while(t--){
ans=0;
n=read();
for(int i=2;i<=n;++i){
int x;
x=read();
tree[x].push_back(i);
tree[i].push_back(x);
}
string s;
cin>>s;
for(int i=0;i<n;++i){
if(s[i]=='W') c[i+1]=-1; else c[i+1]=1;
}
dfs(1,0);
printf("%d\n",ans);
for(int i=1;i<=n;++i) tree[i].clear();
}
return 0;
}

随机推荐

  1. Android 巧用ImageView属性实现选中和未选中效果

    原文地址: Android 巧用ImageView属性实现选中和未选中效果 - Stars-One的杂货小窝 选中和未选中状态变更是很常见需求,UI那边出的两个不同状态的图片,然后开发这边去实现 通常 ...

  2. PostgreSQL 12 文档: 部分 VIII. 附录

    部分 VIII. 附录 目录 A. PostgreSQL错误代码 B. 日期/时间支持 B.1. 日期/时间输入解释 B.2. 处理无效或不明确的时间戳 B.3. 日期/时间关键词 B.4. 日期/时 ...

  3. 【Java 新的选择】,Solon v2.3.8 发布

    Solon 是什么开源项目? 一个,Java 新的生态型应用开发框架.它从零开始构建,有自己的标准规范与开放生态(历时五年,已有全球第二级别的生态规模).与其他框架相比,它解决了两个重要的痛点:启动慢 ...

  4. ISP-AF相关-聚焦区域选择-清晰度评价

    1.镜头相关 镜头类型 变焦类型: 定焦.手动变焦.自动变焦 光圈: 固定光圈.手动光圈.自动光圈 视场角: 鱼眼镜头.超广角镜头.广角镜头.标准镜头.长焦镜头.超长焦镜头(由大至小) 光圈: 超星光 ...

  5. Kubernetes安全框架

    Kubernetes安全框架 K8S安全控制框架主要由下面3个阶段进行控制,每一个阶段都 支持插件方式,通过API Server配置来启用插件. Authentication(鉴权):身份鉴别,只有正 ...

  6. 利用Anaconda3安装tensorflow/keras,并迁移虚拟环境至不能上网的电脑

    利用Anaconda3安装tensorflow/keras,并迁移虚拟环境至不能上网的电脑 下面记录下利用Anaconda安装tensorflow和keras,前前后后也踩了不少坑.并分别在windo ...

  7. node:windows script host 錯誤 console未定义

    错误背景 在开发npm包时,碰到此项报错 解决方案 选中任意js文件,选择打开方式,指定到node中即可

  8. python教程 入门学习笔记 第3天 编程基础常识 代码注释 变量与常量

    编程基础常识 一.注释 1.对代码的说明与解释,它不会被编译执行,也不会显示在编译结果中 2.注释分为:单行注释和多行注释 3.用#号开始,例如:#这是我的第一个python程序 4.注释可以写在单独 ...

  9. Cesium 概述 (二) 空间数据可视化

    https://blog.csdn.net/happyduoduo1/article/details/51865811/

  10. 更专业省心的来了,你没必要研究UE4和Unity官方推流了!

    在当今互联网时代,所有的内容制作者都希望尽可能触达到更多的目标受众,那就需要全平台发布内容并且可以轻松跨平台分享,包括手机.平板电脑.个人电脑以及交互式屏幕,用户能畅快的获得高质量的体验.需求催生了一 ...