CF1676G White-Black Balanced Subtrees
CF1676G White-Black Balanced Subtrees
考察树的遍历。
题目翻译有一个没有翻译到,就是输入的第二行,输入的是 到 的根节点。
第三行是一个字符串,我们可以对 进行初始化了。
表示以 为根,其的子树下面有多少个黑色结点,多少个白色结点。
其中 即它的子节点为黑的和, 为子节点为白色的和,最后在回溯之中统计即可。
最后看每个 的黑色结点的数量是否等于白色结点即可。
注意多测清空。
#include<bits/stdc++.h>
using namespace std;
const int N =1e6+10;
vector<int> g[N<<1];
struct node
{
int black=0,white=0;
}siz[N];
int ans;
void dfs(int u,int fath)
{
for(int i=0;i<g[u].size();i++)
{
int v=g[u][i];
if(v==fath)
continue;
dfs(v,u);
siz[u].black+=siz[v].black,siz[u].white+=siz[v].white;
}
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
ans=0;
cin>>n;
for(int i=2,u;i<=n;i++)
cin>>u,g[u].push_back(i);
for(int i=1;i<=n;i++)
{
char k;
cin>>k;
if(k=='W')
siz[i].white=1;
else
siz[i].black=1;
}
dfs(1,0);
for(int i=1;i<=n;i++)
if(siz[i].black==siz[i].white)
ans++;
cout<<ans<<endl;
for(int i=1;i<=n;i++)
g[i].clear(),siz[i].black=siz[i].white=0;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现