만드는 중입니다

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

방

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

요약
글자가 적힌 격자에서 같은 글자끼리 상하좌우로 이어진 영역을 찾고, 질의마다 주어진 직사각형과 일부라도 겹치는 영역의 개수를 구합니다.
난이도

보통10점 중 7점

유형
그래프, 행렬, 유니온 파인드
정답자
아직 제출이 없습니다

문제

NN행 MM열 행렬이 주어진다. 각 칸에는 영어 소문자가 하나씩 적혀 있다.

방은 같은 글자가 적혀 있고 상하좌우로 서로 연결된 칸들의 최대 집합이다.

질의가 QQ개 주어진다. 각 질의는 직사각형 부분 행렬을 하나 지정하며, 그 부분 행렬에 완전히 또는 일부라도 포함되는 방의 개수를 구한다.

입력

첫 줄에 두 정수 NN과 MM이 주어진다. 다음 NN개 줄에는 각각 MM개의 소문자가 주어진다. 그다음 줄에는 질의의 개수 QQ가 주어진다. 이어지는 QQ개 줄에는 각각 정수 네 개 x1x_1, y1y_1, x2x_2, y2y_2가 주어지며, 대각선 꼭짓점이 (x1,y1)(x_1, y_1)과 (x2,y2)(x_2, y_2)인 직사각형을 나타낸다.

출력

QQ개 줄을 출력한다. ii번째 줄에는 ii번째 질의의 답을 쓴다.

제한

1≤N,M≤20001 \le N, M \le 2000

1≤Q≤50001 \le Q \le 5000

1≤x1,x2≤N1 \le x_1, x_2 \le N

1≤y1,y2≤M1 \le y_1, y_2 \le M

예제1

  1. 예제 1

    입력
    5 6
    aabbcc
    abbbcc
    cbeaed
    adeeed
    affttz
    3
    1 1 5 6
    2 1 4 5
    3 3 5 6
    
    예상 출력
    12
    8
    6