TLE on 2
查看原帖
TLE on 2
361141
_JF_殉情楼主2022/9/10 15:41
#include<bits/stdc++.h>
using namespace std;
const int N =1e6+10;
char s[N];
int dp[N][2];
vector<int> g[N<<1];
void dfs(int node,int fath)
{
	if(s[node]=='W')
		dp[node][1]=1;
	if(s[node]=='B')
		dp[node][0]=1;
	for(int i=0;i<g[node].size();i++)
	{
		int u=g[node][i];
		if(u==fath)
			continue;
		dfs(u,node);
		dp[node][0]+=dp[u][0];
		dp[node][1]+=dp[u][1];
	}
}
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		memset(dp,0,sizeof(dp));
		int n;
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
			g[i].clear();
		for(int i=1,x;i<n;i++)
			scanf("%d",&x),g[x].push_back(i+1),g[i+1].push_back(x);
		scanf("%s",s+1);
		dfs(1,0);
		int ans =0;
		for(int i=1;i<=n;i++)
			if(dp[i][0]==dp[i][1])
				ans++;
		cout<<ans<<endl;
	}
}

求助,不知道为什么T了

2022/9/10 15:41
加载中...