编译未通过求助
查看原帖
编译未通过求助
760136
shichenqi楼主2023/8/10 11:36
#include<bits/stdc++.h>
using namespace std;

const int maxn=100010;

int n,p,ans=0;
string op;

struct node{
	bool b;
	int fa;
	int len;
	int zi[maxn];
};

node a[maxn];

int read(){
	int r=0;char c=getchar();
	while(c<'0'||c>'9') c=getchar();
	while(c>='0'&&c<='9') r=(r<<1)+(r<<3)+(c^48),c=getchar();
	return r;
}

void install(int x){
	
	if(!a[x].b){
		ans++;
		a[x].b=true;
	}
	
	if(x!=0) install(a[x].fa);
}

void uninstall(int x){
	if(a[x].b){
		ans++;
		a[x].b=false;
	}
	
	for(int i=1;i<=a[x].len;i++){
		uninstall(a[x].zi[i]);
	}
}

int main(){
	
	n=read();
	
	for(int i=1;i<=n;i++){
		a[i].b=false;
	}
	
	for(int i=1;i<n;i++){
		a[i].fa=read();
		a[a[i].fa].zi[++a[a[i].fa].len]=i;
	}
	
	p=read();
	while(p--){
		int x;
		cin>>op;
		x=read();
		if(op[0]=='i') install(x);
		else uninstall(x);
		cout<<ans;
		ans=0;
	}
	
	return 0;
}

编译器显示源文件未编译

2023/8/10 11:36
加载中...