QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#176927#5455. TreeScriptCidoai#TL 0ms3288kbC++141.2kb2023-09-12 10:43:112023-09-12 10:43:11

Judging History

你现在查看的是最新测评结果

  • [2023-09-12 10:43:11]
  • 评测
  • 测评结果:TL
  • 用时:0ms
  • 内存:3288kb
  • [2023-09-12 10:43:11]
  • 提交

answer

#include<cstdio>
inline int read(){
	int x=0;
	int f=0,ch=0;
	while(ch<48||ch>57) f=(ch=='-'),ch=getchar();
	while(ch>47&&ch<58) x=(x<<3)+(x<<1)+(ch&15),ch=getchar();
	return f?-x:x;
}
inline void write(int x,char end=' '){
	if(x==0){
		putchar('0');
		putchar(end);
		return;
	}
	if(x<0) putchar('-'),x=-x;
	int ch[70]={0},cnt=0;
	while(x){
		ch[cnt++]=(int)(x%10);
		x/=10;
	}
	while(cnt--) putchar(ch[cnt]+48);
	putchar(end);
}
inline int max(int x,int y){return x>y?x:y;}
const int N=2e5+5;
int p[N],leaf[N];
struct node{
	int to,nxt;
}e[N<<1];
int head[N],cnt;
inline void add(int u,int v){
	e[++cnt].to=v;
	e[cnt].nxt=head[u];
	head[u]=cnt;
}
int can,ans;
inline void dfs(int u){
	int son=0;
	for(int i=head[u];i;i=e[i].nxt){
		++son;
	}
	for(int i=head[u];i;i=e[i].nxt){
		--son;
		int v=e[i].to;
		if(son==0){
			dfs(v);
		}
		else if(!leaf[v]){
			if(!can) can=1,++ans;
			dfs(v);
		}
		else{
			if(can) can--;
			else ++ans;
			dfs(v);
		}
	}
	can++;
}
int main(){
	int T=read();
	while(T--){
		int n=read();
		for(int i=1;i<=n;++i){
			p[i]=read();
			add(p[i],i);
			leaf[p[i]]=1;
		}
		ans=1;
		can=0;
		dfs(1);
		write(ans,'\n');
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3288kb

input:

2
3
0 1 2
7
0 1 2 2 1 4 1

output:

1
2

result:

ok 2 number(s): "1 2"

Test #2:

score: -100
Time Limit Exceeded

input:

1000
197
0 1 1 2 1 4 1 5 8 3 5 1 4 7 12 14 4 7 10 9 12 11 16 10 21 19 22 17 25 13 28 9 5 15 26 26 33 25 15 1 35 6 32 17 37 8 19 43 19 27 29 9 30 6 31 27 35 35 37 13 28 38 57 31 38 8 22 14 33 9 18 62 52 37 10 19 22 60 54 12 38 59 64 65 80 82 28 60 85 78 27 25 71 14 52 6 59 14 87 32 33 41 59 41 88 38 ...

output:


result: