https://www.acmicpc.net/problem/1012
1012๋ฒ: ์ ๊ธฐ๋ ๋ฐฐ์ถ
์ฐจ์ธ๋ ์๋์ธ ํ๋๋ ๊ฐ์๋ ๊ณ ๋ญ์ง์์ ์ ๊ธฐ๋ ๋ฐฐ์ถ๋ฅผ ์ฌ๋ฐฐํ๊ธฐ๋ก ํ์๋ค. ๋์ฝ์ ์ฐ์ง ์๊ณ ๋ฐฐ์ถ๋ฅผ ์ฌ๋ฐฐํ๋ ค๋ฉด ๋ฐฐ์ถ๋ฅผ ํด์ถฉ์ผ๋ก๋ถํฐ ๋ณดํธํ๋ ๊ฒ์ด ์ค์ํ๊ธฐ ๋๋ฌธ์, ํ๋๋ ํด์ถฉ ๋ฐฉ์ง์
www.acmicpc.net
from collections import deque
import sys
sys.setrecursionlimit(10000)
input = sys.stdin.readline
#์ํ์ข์ฐ
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def dfs(x,y):
graph[x][y] = 0
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0<= nx < h and 0<= ny < w:
if graph[nx][ny]:
graph[nx][ny] = 0
dfs(nx,ny)
case = int(input())
cnt_lst = []
for _ in range(case):
w , h, n = map(int, input().split()) #๊ฐ๋ก,์ธ๋ก,๊ฐ์
graph = [ [0]*w for i in range(h)]
cnt = 0
for _ in range(n):
i,j = map(int, input().split())
graph[j][i] = 1
for i in range(h): # ์ธ๋ก : 0~7
for j in range(w): #๊ฐ๋ก : 0~9
if graph[i][j]:
dfs(i,j)
cnt+= 1
cnt_lst.append(cnt)
print(*cnt_lst, sep = "\n")
์ ๋ต์ด๋ค. ์ฒ์์ ํ๋ ธ๋๋ฐ, ๋ฐฐ์ถ์ ์์น๊ฐ x(๊ฐ๋ก), y(์ธ๋ก)์์ ์ฃผ์ํ์ง ์์ ๋ฆฌ์คํธ ๋ฒ์๋ฅผ ์ด๊ณผํด ํ๋ ค๋ฒ๋ ธ๋ค.
๋๋ฆ ์ค๋ฒ 2 ๋ณธ์ธ์๊ฒ ์ด๋ ค์ด ๋ฌธ์ ๋ฐ ๋ง์ถฐ์ ๊ธฐ๋ถ์ด ์ข๋ฑ
'์ฝํ ์ค๋น' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
<๋ฌธ์์ด> ๋ฐฑ์ค 1302๋ฒ. ๋ฒ ์คํธ์ ๋ฌ (์ค๋ต๋ ธํธ) (0) | 2022.07.31 |
---|---|
<dfs bfs>๋ฐฑ์ค 2667๋ฒ. ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (0) | 2022.07.31 |
<dfs bfs> ๋ฐฑ์ค 4963๋ฒ. ์ฌ์ ๊ฐ์ (์ค๋ต๋ ธํธ) / ์๊ฐ์ด๊ณผ(BFS,DFS)->ํด๊ฒฐ (0) | 2022.07.31 |
<dfs bfs> ๋ฐฑ์ค 2178๋ฒ. ๋ฏธ๋ก ํ์ (์ค๋ต๋ ธํธ) (0) | 2022.07.30 |
<DFS,BFS> ๋ฐฑ์ค 1260๋ฒ. DFS์ BFS (์ค๋ต๋ ธํธ) (0) | 2022.07.30 |