만드는 중입니다

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

블랙과 화이트

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

요약
바퀴 모양 그래프에서 흰색(W) 도로를 정확히 k개 포함하는 신장 트리의 개수를 k마다 구합니다.
난이도

어려움10점 중 9점

유형
그래프, 동적 계획법, 조합론, 분할 정복
정답자
아직 제출이 없습니다

문제

새로운 지역에서 샘은 양방향 도로로 연결된 n+1n + 1개의 도시를 발견했다. 그중 nn개의 도시는 원 위에 있고, 나머지 하나는 중심에 자리한 수도다. 원 위의 도시는 순회 순서대로 11부터 nn까지 번호를 붙이고, 수도에는 번호 n+1n + 1을 준다. 각 도로는 수도와 원 위의 도시를 잇거나, 원 위에서 인접한 두 도시를 잇는다. 즉 도로는 도시 (n+1)(n + 1)과 vv를 잇거나, 도시 vv와 (v mod n+1)(v \bmod n + 1)을 잇는다. 여기서 v∈[1,n]v \in [1, n]이다.

각 도로는 화이트 갱단 또는 블랙 갱단 중 하나가 관리한다. 샘은 어느 도시에서든 다른 모든 도시로 갈 수 있도록, 안전하게 확보할 도로의 수를 최소로 고르려 한다. 다시 말해 도시 그래프의 신장 트리를 고른다. 어떤 신장 트리든 정확히 nn개의 도로를 포함한다.

도로를 확보하려면 그 도로를 관리하는 갱단의 우두머리와 협상해야 한다. 샘은 어느 갱단이 더 협조적일지 아직 알지 못한다. 그래서 각 정수 k∈[0,n]k \in [0, n]에 대해, 白 화이트 갱단이 관리하는 도로가 정확히 kk개이고 나머지 n−kn - k개는 블랙 갱단이 관리하는 신장 트리의 개수를 구해 달라고 부탁했다. 답이 클 수 있으므로 998 244 353998\,244\,353으로 나눈 나머지를 구한다.

입력

첫 줄에 정수 nn (3≤n≤50 0003 \le n \le 50\,000)이 주어진다.

둘째 줄에는 원 위의 도시 사이 도로를 나타내는 길이 nn의 문자열 ss가 주어진다. sis_i가 -이면 도시 ii와 도시 (i mod n+1)(i \bmod n + 1) 사이에 도로가 없다. W이면 화이트 갱단이, B이면 블랙 갱단이 관리하는 도로다.

셋째 줄에는 수도와 원 위의 도시 사이 도로를 나타내는 길이 nn의 문자열 tt가 주어진다. tit_i의 의미는 같으며, 수도와 도시 ii 사이의 도로를 뜻한다.

출력

n+1n + 1개의 정수 aka_k를 출력한다. kk번째 정수는 화이트 갱단이 관리하는 도로를 정확히 kk개 포함하는 신장 트리의 개수다.

예제4

  1. 예제 1

    입력
    3
    ---
    WBW
    
    예상 출력
    0 0 1 0
    
  2. 예제 2

    입력
    3
    WWW
    BBB
    
    예상 출력
    1 6 9 0
    
  3. 예제 3

    입력
    5
    BWB-B
    WB-W-
    
    예상 출력
    0 2 6 3 0 0
    
  4. 예제 4

    입력
    4
    ----
    ----
    
    예상 출력
    0 0 0 0 0