만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

룬 숲

시간 제한3초메모리 제한1024 MB

요약
트리의 각 정점에 적힌 글자로 만든 두 경로 문자열의 가장 긴 공통 접두사 길이를 구합니다.
난이도

보통10점 중 7점

유형
문자열 매칭, 트리, 이분 탐색
정답자
아직 제출이 없습니다

문제

흑곰과 흰곰은 룬 숲에 사는 커모드 곰 남매이다. 두 곰은 숲에 있는 나무 한 그루에서 문자열 놀이를 하려고 한다. 룬 숲의 나무는 11부터 NN까지의 정점과 N−1N-1개의 양방향 간선으로 이루어진 연결 그래프이다. ii번 정점에는 알파벳 대문자 rir_i가 적혀 있다. 두 곰은 다음 규칙에 따라 나무에서 각자 원하는 문자열을 하나 만든다.

  1. 빈 문자열 SS를 준비한다.
  2. 정점 xx와 정점 yy를 고른다. 두 정점은 같아도 된다.
  3. 정점 xx에서 시작해 정점 yy에서 끝나는 단순 경로(중복된 정점이 없는 경로)를 따라 이동한다. 방문한 순서대로 정점에 적힌 문자를 SS의 오른쪽 끝에 붙인다. 정점 xx와 yy에 적힌 문자도 포함한다.

이렇게 나무에서 만든 문자열을 S(x,y)S(x,y)라고 한다. 놀이를 하는 동안 나무에 적힌 문자는 사라지거나 바뀌지 않는다.

흑곰은 정점 aa와 bb를 골라 S(a,b)S(a,b)를 만든다. 흰곰은 정점 cc와 dd를 골라 S(c,d)S(c,d)를 만든다. 두 문자열을 왼쪽 끝부터 비교했을 때 몇 글자가 겹치는지 확인한다. 이것이 커모드 곰의 문자열 놀이이다.

입력

첫 번째 줄에 정점의 개수 NN이 주어진다. (2≤N≤2×105)(2\leq N\leq 2\times 10^5)

두 번째 줄부터 NN개의 줄에 걸쳐 i+1i+1번째 줄에 ii번 정점에 적힌 문자 rir_i가 주어진다. rir_i는 알파벳 대문자이다.

N+2N+2번째 줄부터 N−1N-1개의 줄에 걸쳐 간선의 양 끝 정점 uiu_i와 viv_i가 공백으로 구분되어 주어진다. (1≤ui<vi≤N)(1\leq u_i < v_i\leq N)

2N+12N+1번째 줄에 정수 MM이 주어진다. (1≤M≤2×105)(1\leq M\leq 2\times 10^5)

2N+22N+2번째 줄부터 MM개의 줄에 걸쳐 흑곰과 흰곰이 고른 정점 ai,bi,ci,dia_i, b_i, c_i, d_i가 공백으로 구분되어 주어진다. (1≤ai,bi,ci,di≤N)(1\leq a_i,b_i,c_i,d_i\leq N)

출력

MM개의 줄에 걸쳐 S(ai,bi)S(a_i,b_i)와 S(ci,di)S(c_i,d_i)를 왼쪽 끝부터 비교했을 때 겹치는 글자의 개수를 출력한다. ii번째 줄에 ii번째 놀이의 답을 쓴다.

예제1

  1. 예제 1

    입력
    5
    B
    B
    A
    C
    C
    1 2
    2 3
    2 4
    1 5
    5
    3 5 1 1
    1 2 2 5
    4 1 5 3
    5 3 3 5
    4 5 5 4
    
    예상 출력
    0
    2
    3
    0
    4