문제 링크
메모리: 99192 KB, 시간: 696 ms
너비 우선 탐색, 그래프 이론, 그래프 탐색
2023년 11월 5일 14:37:32
![](https://camo.githubusercontent.com/f4d2d12d2d0d389779950deb266d38f721a8c89b4c4678a31857634185a2c560/68747470733a2f2f75706c6f61642e61636d696370632e6e65742f63346462333566342d353235652d343335342d393036332d6238383837306430396636652f2d2f707265766965772f)
준겸이는 N×M$N \times M$칸으로 이루어진 도넛 모양의 행성에 살고 있다. 준겸이가 살고 있는 행성에는 위 그림처럼 격자 모양으로 줄이 그어져 있다. 행성의 각 칸은 숲으로 막혀 있거나, 지나갈 수 있도록 비어 있다.
준겸이는 본인의 집이 있는 위치를 기준으로 삼아 (0,0)$(0,0)$이라고 표시하기로 했다. 준겸이는 행성 위에서 상하좌우로 걸어 다닐 수 있다. 준겸이가 오른쪽으로 한 칸 걸어가면, 위치 (0,1)$(0,1)$에 도달할 것이다. 마찬가지로 아래로 한 칸 걸어가면, 위치 (1,0)$(1,0)$에 도달할 것이다. 준겸이가 (0,0)$(0,0)$에서 M$M$칸 오른쪽으로 걸어가면, 한 바퀴를 돌아 다시 원래 자리로 되돌아오게 된다. 비슷하게 (0,0)$(0,0)$에서 N$N$칸 아래로 걸어가면, (0,0)$(0,0)$으로 돌아오게 된다. 행성은 연결되어 있기 때문에, 준겸이가 (0,0)$(0,0)$에서 왼쪽으로 한 칸 걸어가면 위치 (0,M−1)$(0,M-1)$에 도달할 것이다. 마찬가지로 준겸이가 (0,0)$(0,0)$에서 위로 한 칸 걸어가면 (N−1,0)$(N-1, 0)$에 도달하게 된다.
준겸이는 행성을 탐험하려고 한다. 만약 준겸이가 비어 있는 어떤 칸 A=(p1,q1)$A=(p_1,q_1)$에서 시작해, 숲에 막히지 않고 비어 있는 칸 B=(p2,q2)$B=(p_2,q_2)$에 도달할 수 있다면 A$A$와 B$B$는 같은 구역이다. 반대로, 도달할 수 없다면 A$A$와 B$B$는 서로 다른 구역이다. 당신은 준겸이가 탐험할 수 있는 빈 구역의 개수가 몇 개인지 출력해야 한다.
첫 번째 줄에 N$N$과 M$M$이 공백을 사이에 두고 주어진다.
두 번째 줄부터 N$N$개의 줄에 걸쳐 N×M$N \times M$개의 칸에 대한 정보가 주어진다. 두 번째 줄에서부터 i$i$번째 줄에 주어지는 j$j$번째 정수는 칸 (i−1,j−1)$(i-1, j-1)$에 대한 정보이다. 만약 0이라면 비어 있는 것이고, 1이라면 숲으로 막혀 있는 것이다.
탐험할 수 있는 구역의 개수를 출력한다.