ํ์ด
์์ข ์ด ๋ฌธ์ ์ ์ด๋ ค์ด ๋ฒ์ ์ด๋ค. ์ฒ์์ ์ขํ ์ต๋ ์ต์๊ฐ์ ๋น๊ตํด์ ๋๋ ๋ง ๊ตฌํด์ฃผ๋ฉด ๋ ์ค ์์๋๋ฐ ๊ฒน์น์ง ์์ ์๋ ์๊ณ ์ค๊ฐ์ ๊ตฌ๋ฉ์ด ๋ซ๋ ค์์ ๊ฒฝ์ฐ ๊ทธ ๋๋ ๊น์ง ๊ตฌํด์ผํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
BFS ๋ฅผ ํตํด ๊ฒฝ๊ณ์ ์ ๋ง๋ ๋๋ง๋ค ans ๋ฅผ 1 ์ฉ ๋ํด์ฃผ๋ค ๋ณด๋ฉด ๋๋ ์ ๊ธธ์ด๋ฅผ ์ ์ ์๋ค.
๋จผ์ 100 x 100 ์ ๋ํ์ง๋ฅผ ๊ตฌํํด ์ค ๋ ๋ชจ์๋ฆฌ์ ์์ข ์ด๊ฐ ๋ฐฐ์น๋ ๊ฒ์ ๊ฐ์ํ์ฌ 102 x 102 ๋ํ์ง๋ฅผ ์ ์ธํด์ค๋ค.
ํ ์นธ์ฉ ์ฌ์ ๊ฐ ์์ด์ผ BFS ํ์์ ํ ๋ ๊ฒฝ๊ณ์ ์ ํ์ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ดํ ์ ๋ ฅ๋ฐ์ ๊ฐ์ ๋ฐ๋ผ ์์ข ์ด๊ฐ ๋ฐฐ์น๋ ์ง์ญ์ 1 ๋ก ๋ฐ๊ฟ์ค ํ ์ ์ญ์ ํ์ํ๋ฉฐ BFS ๋ฅผ ์ํํด์ค๋ค.
์์ข ์ด๊ฐ ํ์๋ ์ง์ ์์ BFS ๋ฅผ ์คํ์ํค๋ฉด ํด๋น ์์ข ์ด์ ์์ญ์ ์ ์ฒด์ ์ผ๋ก ํ์ญํ๋ฉฐ ๊ฒฝ๊ณ์ ์ ๋ฟ์ ๋ ๋ง๋ค ans ๊ฐ์ด ์ฌ๋ผ๊ฐ๋ค.
๊ฒฝ๊ณ์ ์ ๊ฐ์ ๊ฒฐ๊ตญ ๋๋ ์ ๊ธธ์ด๊ฐ ๋๊ธฐ ๋๋ฌธ์ ํด๋น ์์ข ์ด ์์ญ์ ๋ชจ๋ ํ์ํ์ ๊ฒฝ์ฐ ๊ทธ ์์ข ์ด ์์ญ์ ๋๋ ๋ฅผ ๊ตฌํ ๊ฒ์ด๋ค.
๋ฆฌํด๋ฐ์ ๊ฐ์ answer ์ ๋ํด์ค ํ ์์ง ํ์๋์ง ์์ ์์ข ์ด ์์ญ์ ์ฐพ์ ์๋ฅผ ๋ฐ๋ณตํ๋ค.
์์ค์ฝ๋
# ์์ข
์ด - 2
from collections import deque
import sys
input = sys.stdin.readline
def bfs(i, j):
q = deque()
q.append((i, j))
visited[i][j] = 1
ans = 0
while q:
x, y = q.popleft()
for k in range(4):
nx = x + dx[k]
ny = y + dy[k]
if 0 <= nx < 102 and 0 <= ny < 102 and visited[nx][ny] == 0:
if board[nx][ny] == 1:
q.append((nx, ny))
visited[nx][ny] = 1
else:
ans += 1
return ans
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
board = [[0] * 102 for _ in range(102)]
visited = [[0] * 102 for _ in range(102)]
answer = 0
for _ in range(int(input())):
x, y = map(int, input().split())
for i in range(x+1, x+11):
for j in range(y+1, y+11):
board[i][j] = 1
for i in range(1, 102):
for j in range(1, 102):
if board[i][j] == 1 and visited[i][j] == 0:
answer += bfs(i, j)
print(answer)