LOADING

加载过慢请开启缓存,浏览器默认开启

daily 1

2023/4/19 daily

今天当畜生了,只能说是分不了了,难绷,这下🃏了

CF 1676G

今天开始刷树形DP
第一道是道水水题,dfs一下,遍历黑子和白子的数量就好了

黑子说话!

void solve(){
  int n;
  cin>>n;
  vector<int>f(n+1);
  vector<vector<int>>E(n+1);
  for(int i=2;i<=n;++i){
    cin>>f[i];
    if(f[i]!=i){
        E[f[i]].push_back(i);
    }
  }
  string color;
  cin>>color;
  color='0'+color;
  vector<int>white(n+1),black(n+1);
  function<void(int,int)>dfs=[&](int x,int fa){
    if(color[x]=='W'){
        white[x]++;
    }else{
        black[x]++;
    }
    for(auto v:E[x]){
        if(v!=fa){
            dfs(v,fa);
            white[x]+=white[v];
            black[x]+=black[v];
        }
    }
  };
  dfs(1,-1);
  int ans=0;
  for(int i=1;i<=n;++i){
    if(white[i]==black[i]){
        ++ans;
    }
  }
  cout<<ans<<'\n';
  return;
}