만드는 중입니다

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

경찰 가설

시간 제한2초메모리 제한512 MB

요약
정점마다 글자가 하나씩 적힌 트리에서 두 정점 u와 v 사이 경로에 패턴 P가 나타나는 횟수를 구하고, 정점의 글자를 바꾸는 연산을 처리합니다.
난이도

어려움10점 중 8점

유형
트리, 문자열 매칭, 세그먼트 트리, DFS
정답자
아직 제출이 없습니다

문제

닐로고니아의 대중교통 시스템에는 주요 관광지를 잇는 고속 노선망이 있다. N−1N-1개의 고속 열차가 NN개의 관광지를 연결하며, 어느 관광지에서 출발하든 이 노선망만으로 다른 모든 관광지에 갈 수 있다.

역의 낙서는 세계 어디에나 흔하듯 이 나라 역에서도 흔하다. 경찰이 주목한 점은 각 역에 특정 스타일로 쓰인 글자가 정확히 하나씩 있다는 것이다. 범인들이 낙서를 바꾸어 연락을 주고받는다는 가설에 따라, 경찰은 낙서와 그 변경을 감시하는 시스템을 만들기로 했다.

감시할 패턴 PP, 역 사이의 연결 관계, 각 역의 의심스러운 글자가 주어질 때, 다음 연산을 처리하는 프로그램을 작성하라.

  • 1 u v: u에서 v까지 경로를 따라 이어지는 정점들에 대응하는 글자를 순서대로 읽었을 때, 패턴 PP가 몇 번 나타나는지 출력한다.
  • 2 u x: 역 u의 의심스러운 글자를 x로 바꾼다.

입력

첫 줄에 두 정수 NN과 QQ (1≤N,Q≤1051 \le N, Q \le 10^5)가 주어진다. 이는 역의 수와 연산의 수이다. 둘째 줄에는 감시할 패턴 PP (1≤∣P∣≤1001 \le |P| \le 100)가 주어진다. 셋째 줄에는 각 역에 처음 대응하는 글자를 나타내는 길이 NN의 문자열 SS가 주어진다. 이어지는 N−1N-1개의 줄에는 두 정수 uu와 vv가 주어지며, 이는 역 uu와 역 vv 사이에 고속 열차가 있다는 뜻이다. 마지막 QQ개의 줄에 연산이 주어진다.

출력

종류가 1인 연산마다 분석한 경로에서 패턴이 나타나는 횟수를 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    4 4
    xtc
    xtzy
    1 2
    2 3
    3 4
    1 1 3
    2 3 c
    1 1 3
    1 3 1
    
    예상 출력
    0
    1
    0
    
  2. 예제 2

    입력
    6 7
    lol
    dlorlx
    1 2
    1 3
    3 4
    3 5
    5 6
    1 2 6
    2 3 l
    2 6 l
    2 5 o
    1 2 6
    2 1 o
    1 6 2
    
    예상 출력
    0
    1
    2
    
  3. 예제 3

    입력
    5 2
    aba
    ababa
    1 2
    2 3
    3 4
    4 5
    1 1 5
    1 5 1
    
    예상 출력
    2
    2