QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#176928#5455. TreeScriptCidoai#WA 4ms5424kbC++141.4kb2023-09-12 10:44:282023-09-12 10:44:28

Judging History

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

  • [2023-09-12 10:44:28]
  • 评测
  • 测评结果:WA
  • 用时:4ms
  • 内存:5424kb
  • [2023-09-12 10:44:28]
  • 提交

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 n;
inline void clr(){
	for(int i=1;i<=cnt;++i) e[i]={0,0};
	for(int i=1;i<=n;++i) head[i]=0;
	cnt=0;
	for(int i=1;i<=n;++i) leaf[i]=0,p[i]=0;
}
int main(){
	int T=read();
	while(T--){
		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');
		clr();
	}
	return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 1ms
memory: 5424kb

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
Wrong Answer
time: 4ms
memory: 1332kb

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:

3
4
2
3
2
2
2
3
4
2
2
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
3
2
2
4
3
4
2
2
2
2
2
2
2
2
3
2
2
2
2
3
2
2
2
2
3
2
3
4
2
2
3
2
2
2
2
2
3
2
2
2
2
4
2
3
3
2
3
3
1
1
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
4
3
2
3
2
2
2
3
2
2
3
3
2
3
3
2
3
3
3
2
2
2
3
4
2
3
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
2
2
3
2
...

result:

wrong answer 1st numbers differ - expected: '4', found: '3'