회문
시간 제한1초메모리 제한512 MB
두 문자열을 지정된 순서로 이어 붙일 때마다, 결과 0과 1 문자열에 있는 서로 다른 회문 부분 문자열의 개수를 출력합니다.
문제
길이가 인, 문자 0 또는 1로 이루어진 문자열이 주어진다. 문자에는 의 번호가 붙어 있다. 처음에는 각 문자가 길이 1인 문자열 하나를 나타낸다.
연결은 두 단어 와 를 골라 지운 뒤, 의 문자가 의 문자 뒤에 오도록 이어 붙인 문자열 로 바꾸는 연산이다.
개의 초기 문자열은 번의 연결을 거쳐 하나의 최종 문자열이 된다. 번째 연결은 쌍으로 주어지며, 번째 문자가 속한 문자열과 번째 문자가 속한 문자열을 잇는다는 뜻이다. 번째 문자와 번째 문자는 같은 문자열에 속하지 않는다고 보장된다.
문자열 의 회문 값은 의 부분 문자열 가운데 회문인 것의 서로 다른 개수이다. 회문은 앞에서 읽든 뒤에서 읽든 같은 문자열이다. 부분 문자열은 문자열의 앞이나 뒤에서 문자를 0개 이상 지워서 얻는 문자열이다.
각 연결 후에 만들어진 문자열의 회문 값을 출력한다.
입력
첫째 줄에 문자의 개수 ()이 주어진다.
둘째 줄에는 초기 문자열을 나타내는 개의 0과 1로 이루어진 문자열이 주어진다.
이후 개의 줄 각각에 번째 연결을 나타내는 두 정수 , (, )가 주어진다.
출력
개의 줄을 출력한다. 번째 줄에는 번째 연결 후 얻은 단어의 회문 값을 출력한다.
힌트
세 번째 입력에서 연결할 때마다 새로 만들어지는 문자열은 차례로 00, 10, 00, 100, 1000, 001000, 00100010이다. 각각의 회문 값은 2, 2, 2, 3, 4, 6, 8이다.
예를 들어 00100010의 회문 값은 8이다. 이 문자열에는 회문인 부분 문자열이 8개 있다. 그것은 0, 00, 000, 10001, 0100010, 1, 010, 00100이다.