求助
  • 板块灌水区
  • 楼主xsj4zyc
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/23 20:32
  • 上次更新2024/8/23 22:53:46
查看原帖
求助
778772
xsj4zyc楼主2024/8/23 20:32
#include<bits/stdc++.h>
using namespace std;
int n;
struct node{
	int x,y;
	int flag;
}a[100010];
string s;
int m;
void dfs(int k){
	//cout<<k<<endl;
	if(k==0) return;
	if(a[k].flag==0) a[k].flag=1;
	else if(a[k].flag==1) a[k].flag=0;
	dfs(a[k].x);
	dfs(a[k].y);
}
int main(){
	cin>>n;
	for(int i=1;i<n;i++){
		int xx;
		scanf("%d",&xx);
		//cout<<a[xx].x<<"  "<<a[xx].y<<endl;
		if(a[xx].x==0){
			a[xx].x=i+1;
		}
		else a[xx].y=i+1;
	}
	/*for(int i=1;i<=n;i++){
		cout<<a[i].x<<"   "<<a[i].y<<endl<<endl;
	}*/ 
	cin>>s;
	 for(int i=0;i<s.size();i++){
		a[i+1].flag=s[i]-'0';
	} 
	cin>>m; 
	for(int i=1;i<=m;i++){
		int r;
		scanf("%d",&r);
		dfs(r);
	}
	for(int i=1;i<=n;i++) cout<<a[i].flag;
}

有没有大佬能帮忙优化一下,有好多点TLE,谢谢。 https://www.luogu.com.cn/problem/P10722

2024/8/23 20:32
加载中...