만드는 중입니다

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

도넛 행성

면접 대비

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

요약
N×M 격자의 맞은편 가장자리가 서로 이어진 토러스로 보고, 빈 칸끼리 연결된 영역의 개수를 구합니다.
난이도

보통10점 중 4점

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

문제

준겸이는 N×MN \times M칸으로 이루어진 도넛 모양의 행성에 살고 있다. 행성에는 위 그림처럼 격자 모양으로 줄이 그어져 있다.

각 칸은 숲으로 막혀 있거나, 지나갈 수 있도록 비어 있다.

준겸이는 자신의 집 위치를 (0,0)(0,0)으로 정했다. 준겸이는 행성 위에서 상하좌우로 걸어 다닐 수 있다. 오른쪽으로 한 칸 걸어가면 (0,1)(0,1)에 도달하고, 아래로 한 칸 걸어가면 (1,0)(1,0)에 도달한다. (0,0)(0,0)에서 오른쪽으로 MM칸 걸어가면 한 바퀴를 돌아 원래 자리로 돌아온다. 마찬가지로 (0,0)(0,0)에서 아래로 NN칸 걸어가면 (0,0)(0,0)으로 돌아온다. 행성은 연결되어 있으므로, (0,0)(0,0)에서 왼쪽으로 한 칸 걸어가면 (0,M−1)(0,M-1)에 도달하고, 위로 한 칸 걸어가면 (N−1,0)(N-1,0)에 도달한다.

준겸이는 행성을 탐험하려고 한다. 비어 있는 칸 A=(p1,q1)A=(p_1,q_1)에서 출발해 숲에 막히지 않고 비어 있는 칸 B=(p2,q2)B=(p_2,q_2)에 도달할 수 있다면, AA와 BB는 같은 구역이다. 도달할 수 없다면 서로 다른 구역이다. 준겸이가 탐험할 수 있는 빈 구역의 개수를 출력해야 한다.

입력

첫 번째 줄에 NN과 MM이 공백을 사이에 두고 주어진다.

두 번째 줄부터 NN개의 줄에 걸쳐 N×MN \times M개의 칸에 대한 정보가 주어진다. 두 번째 줄부터 ii번째 줄에 주어지는 jj번째 정수는 칸 (i−1,j−1)(i-1, j-1)에 대한 정보이다. 0이면 비어 있는 칸이고, 1이면 숲으로 막혀 있는 칸이다.

출력

탐험할 수 있는 구역의 개수를 출력한다.

제한

  • 2≤N≤1 0002 \le N \le 1\,000
  • 2≤M≤1 0002 \le M \le 1\,000

예제2

  1. 예제 1

    입력
    5 6
    1 1 1 1 1 1
    1 0 0 0 1 1
    1 1 1 1 0 0
    1 1 1 1 0 0
    1 1 1 1 1 1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    7 8
    0 0 1 1 0 0 0 0
    0 1 1 1 1 0 1 0
    1 1 1 1 1 1 1 1
    0 1 1 1 1 1 0 0
    1 1 0 0 0 1 0 0
    0 1 0 0 0 1 0 1
    0 0 1 1 1 1 0 0
    
    예상 출력
    2