페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#5100
서브태스크

팰린드롬 놀이 1초 1024MB

문제

여러분은 0과 1로만 이루어진 길이 N의 수열을 받았다.

초기에 각 원소는 길이 1의 문자열을 의미한다.

 

이 수열에서 원소들을 합치는 연산을 N-1번 실행하려 한다. 

원소를 합치는 것은 두 개의 문자열 S와 T가 있으면, 

S와 T를 수열에서 지우고 "ST"를 새롭게 삽입하는 것으로 생각할 수 있다. 

i번째 합치는 연산은 두 숫자 Ai, Bi로 표기할 수 있는데, 이는 초기 수열의 Ai번째 문자열이 속해 있는 문자열과

초기 수열의 Bi번째 문자열이 속해 있는 문자열을 합치는 것을 뜻한다. 

 

Ai와 Bi가 가리키는 문자열이 다르다는 사실은 보장된다. 

또한, (Ai, Bi)와 (Bi, Ai)의 연산 결과가 다를 수도 있다는 사실을 주의하자.

 

어떤 문자열의 '팰린드롬 점수'는, 

해당 문자열에서 찾을 수 있는 서로 다른 부분 문자열 중에서 팰린드롬인 것의 개수로 정의한다. 

여기서 문자열의 부분문자열이란, 문자열의 앞과 뒤에서 적당한 개수만큼 문자를 삭제하고 남은 문자열이다.

 

원소를 합치는 연산을 할 때마다, 합쳐진 문자열에 대한 팰린드롬 점수를 구하여라.

 

[Subtask]

#1 (9점) : N<=100

#2 (19점) : N<=1000

#3 (29점) : 모든 Ai, Bi에 대해 Ai= 1, Bi= i+1이다.

#4 (43점) : 제한 없음


입력

첫 줄에 문자열의 길이 N이 주어진다. (1 ≤ N ≤ ​105)

둘째 줄부터 N-1개의 줄에 걸쳐 문자열을 합치는 연산을 나타내는 두 개의 정수 Ai와 Bi가 주어진다. (1 ≤ ​Ai, Bi ≤ ​N)

 


출력

각 합치는 연산에 대해, 합쳐진 문자열의 팰린드롬 점수를 한 줄에 하나씩 출력하여라.


예제1

입력
3

010
12
23
출력
2

3

예제2

입력
5

00111
41
15
21
31
출력
2

3
4
5

예제3

입력
8

10010000
75
42
36
13
68
53
12
출력
2

2
2
3
4
6
8

출처

coci 2021/2022 contest6

역링크