UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#207215#3731. 树的直径one_zero_four_zero1002427ms40324kbC++111.1kb2024-07-27 19:28:522024-07-27 20:25:18

answer

#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;

int n, ans = 0;
int pos1 = 1, pos2 = 0;
int fa[1000006];
int h[1000006];
int st[25][1000006];
vector<int> E[1000006];

int LCA(int u, int v){
	if (h[u] > h[v]) swap(u, v);
	while (h[v] > h[u]){
		v = st[__lg(h[v] - h[u])][v];
	}
	if (u == v) return u;
	for (int i = __lg(h[u]); i >= 0; i --){
		if (st[i][u] == st[i][v]) continue;
		u = st[i][u], v = st[i][v];
	}
	return st[0][u];
}

int getdis(int u, int v){
	return h[u] + h[v] - 2 * h[LCA(u, v)];
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("../data.in","r",stdin);
    freopen("../data.out","w",stdout);
#endif

	scanf("%d", &n);
	h[1] = 1;
	for (int i = 2; i <= n; i ++){
		scanf("%d", &fa[i]);
		st[0][i] = fa[i], h[i] = h[fa[i]] + 1;
		for (int j = 1; j <= __lg(n); j ++){
			st[j][i] = st[j - 1][st[j - 1][i]];
		}
		if (getdis(pos1, i) > ans){
			pos2 = i;
			ans = getdis(pos1, i);
		}
		if (getdis(pos2, i) > ans){
			pos1 = i;
			ans = getdis(pos2, i);
		}
		printf("%d ", ans);
	}
	printf("\n");

    return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 5
Accepted
time: 9ms
memory: 24708kb

input:

1000
1 2 3 3 5 4 6 7 8 6 10 11 10 9 11 14 15 16 16 17 17 20 15 15 20 25 21 28 19 18 21 32 22 26 34 2...

output:

1 2 3 3 4 4 5 6 7 7 8 8 8 9 9 10 11 11 11 12 12 12 12 12 12 13 14 15 15 15 15 15 15 15 15 15 15 15 1...

result:

ok 999 tokens

Test #2:

score: 5
Accepted
time: 3ms
memory: 24708kb

input:

1000
1 1 2 3 4 4 7 5 9 10 8 10 9 9 10 16 13 13 16 16 13 13 17 24 19 24 16 20 20 29 19 30 33 23 21 33...

output:

1 2 3 4 5 5 6 7 8 9 10 10 10 10 10 11 11 11 11 11 11 11 12 13 13 13 13 13 13 13 13 13 14 14 14 14 14...

result:

ok 999 tokens

Test #3:

score: 5
Accepted
time: 3ms
memory: 24708kb

input:

1000
1 1 3 4 3 6 7 5 7 6 9 10 9 12 11 13 13 18 13 18 17 15 22 15 15 20 27 19 29 21 19 23 32 30 22 25...

output:

1 2 3 4 4 4 5 6 6 6 7 8 8 9 9 10 10 11 11 11 11 12 13 13 13 13 13 13 14 14 14 15 15 16 16 16 16 16 1...

result:

ok 999 tokens

Test #4:

score: 5
Accepted
time: 8ms
memory: 24712kb

input:

1000
1 1 2 3 3 4 5 7 7 10 10 11 8 12 12 12 11 18 18 20 14 19 23 15 22 18 25 22 29 22 25 23 24 34 22 ...

output:

1 2 3 4 4 5 6 7 7 8 8 9 10 10 10 10 10 11 11 12 13 13 14 14 15 15 15 15 16 16 16 16 17 18 18 18 18 1...

result:

ok 999 tokens

Test #5:

score: 5
Accepted
time: 146ms
memory: 40324kb

input:

200000
1 2 2 1 4 4 2 2 2 7 4 8 11 7 1 6 10 5 19 12 9 22 1 4 8 23 15 24 18 12 21 2 14 13 1 4 23 38 2 ...

output:

1 2 2 3 4 4 4 4 4 5 5 5 6 6 6 6 6 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 10 10 10 10 10 10 10 10 10...

result:

ok 199999 tokens

Test #6:

score: 5
Accepted
time: 148ms
memory: 40320kb

input:

200000
1 1 1 4 5 2 4 1 7 9 8 4 12 11 13 15 9 16 16 19 9 9 10 14 8 25 9 26 10 26 7 17 11 2 31 27 14 3...

output:

1 2 2 3 4 5 5 5 6 6 6 6 7 7 7 8 8 8 8 9 9 9 9 9 9 10 10 10 10 10 10 11 11 11 11 12 12 12 12 12 12 12...

result:

ok 199999 tokens

Test #7:

score: 5
Accepted
time: 164ms
memory: 40324kb

input:

200000
1 1 2 2 2 4 1 3 5 4 6 4 6 2 7 4 5 6 12 1 14 16 21 8 24 11 12 20 1 1 4 16 2 15 30 36 24 12 16 ...

output:

1 2 3 3 3 4 4 5 5 5 5 5 5 5 6 6 6 6 6 6 6 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 10 1...

result:

ok 199999 tokens

Test #8:

score: 5
Accepted
time: 155ms
memory: 40320kb

input:

200000
1 2 1 4 5 6 1 3 5 7 8 1 13 8 14 15 8 2 12 14 5 5 3 21 24 1 25 20 2 29 16 19 4 10 33 32 26 31 ...

output:

1 2 3 4 5 6 6 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 ...

result:

ok 199999 tokens

Test #9:

score: 5
Accepted
time: 150ms
memory: 40324kb

input:

200000
1 1 3 3 5 5 6 8 8 9 11 12 12 14 15 16 16 17 19 20 21 22 22 23 25 25 27 28 29 29 30 31 32 34 3...

output:

1 2 3 3 4 4 5 6 6 7 8 9 9 10 11 12 12 13 14 15 16 17 17 18 19 19 20 21 22 22 23 23 24 25 25 26 27 27...

result:

ok 199999 tokens

Test #10:

score: 5
Accepted
time: 143ms
memory: 40320kb

input:

200000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...

output:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3...

result:

ok 199999 tokens

Test #11:

score: 5
Accepted
time: 153ms
memory: 40320kb

input:

200000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...

output:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3...

result:

ok 199999 tokens

Test #12:

score: 5
Accepted
time: 77ms
memory: 40324kb

input:

200000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...

output:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3...

result:

ok 199999 tokens

Test #13:

score: 5
Accepted
time: 145ms
memory: 40324kb

input:

200000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...

output:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3...

result:

ok 199999 tokens

Test #14:

score: 5
Accepted
time: 140ms
memory: 40320kb

input:

200000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...

output:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3...

result:

ok 199999 tokens

Test #15:

score: 5
Accepted
time: 191ms
memory: 40320kb

input:

200000
1 2 3 4 5 6 7 8 9 9 10 11 13 14 15 16 16 18 18 19 20 22 21 22 23 24 25 27 27 28 30 32 30 32 3...

output:

1 2 3 4 5 6 7 8 9 9 10 10 11 12 13 14 14 15 15 16 16 17 17 17 18 18 18 19 19 19 20 21 21 21 22 23 24...

result:

ok 199999 tokens

Test #16:

score: 5
Accepted
time: 183ms
memory: 40324kb

input:

200000
1 2 3 4 5 6 7 8 9 9 10 12 12 14 14 15 16 18 19 18 20 21 21 22 25 26 27 26 29 30 29 29 30 31 3...

output:

1 2 3 4 5 6 7 8 9 9 10 11 11 12 12 13 13 14 15 15 16 16 16 17 18 19 20 20 20 21 21 21 21 22 23 24 24...

result:

ok 199999 tokens

Test #17:

score: 5
Accepted
time: 110ms
memory: 40324kb

input:

200000
1 2 3 4 5 6 7 8 9 10 10 11 13 14 14 15 17 18 19 18 21 21 22 22 23 24 26 27 29 28 29 32 30 32 ...

output:

1 2 3 4 5 6 7 8 9 10 10 11 12 13 13 14 15 16 17 17 17 17 18 18 18 19 19 20 21 21 21 22 22 22 22 23 2...

result:

ok 199999 tokens

Test #18:

score: 5
Accepted
time: 175ms
memory: 40324kb

input:

200000
1 2 3 4 5 6 7 8 9 10 10 11 13 14 15 16 17 18 19 20 19 22 23 22 25 26 26 26 29 28 28 31 30 34 ...

output:

1 2 3 4 5 6 7 8 9 10 10 11 12 13 14 15 16 17 18 19 19 19 20 20 20 21 21 21 22 22 22 23 23 24 25 25 2...

result:

ok 199999 tokens

Test #19:

score: 5
Accepted
time: 162ms
memory: 40320kb

input:

200000
1 2 3 4 5 6 7 8 9 10 10 12 12 14 15 16 17 18 18 19 20 21 21 22 25 24 25 26 27 29 28 31 31 31 ...

output:

1 2 3 4 5 6 7 8 9 10 10 11 11 12 13 14 15 16 16 17 17 18 18 18 19 19 19 20 20 21 21 22 22 22 22 23 2...

result:

ok 199999 tokens

Test #20:

score: 5
Accepted
time: 162ms
memory: 40320kb

input:

200000
1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 3...

output:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3...

result:

ok 199999 tokens