๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿปโ€๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 1012๋ฒˆ - ์œ ๊ธฐ๋† ๋ฐฐ์ถ”

by dkswnkk 2021. 10. 16.
 

1012๋ฒˆ: ์œ ๊ธฐ๋† ๋ฐฐ์ถ”

์ฐจ์„ธ๋Œ€ ์˜๋†์ธ ํ•œ๋‚˜๋Š” ๊ฐ•์›๋„ ๊ณ ๋žญ์ง€์—์„œ ์œ ๊ธฐ๋† ๋ฐฐ์ถ”๋ฅผ ์žฌ๋ฐฐํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค. ๋†์•ฝ์„ ์“ฐ์ง€ ์•Š๊ณ  ๋ฐฐ์ถ”๋ฅผ ์žฌ๋ฐฐํ•˜๋ ค๋ฉด ๋ฐฐ์ถ”๋ฅผ ํ•ด์ถฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•œ๋‚˜๋Š” ํ•ด์ถฉ ๋ฐฉ์ง€์— 

www.acmicpc.net

 

// Copyright ยฉ 2021 ์•ˆ์ฃผํ˜•. All rights reserved.
// https://www.acmicpc.net/problem/1012
// BOJ1012 ์œ ๊ธฐ๋† ๋ฐฐ์ถ”
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int M, N, K; //M:๊ฐ€๋กœ๊ธธ์ด N:์„ธ๋กœ๊ธธ์ด K: ๋ฐฐ์ถ” ๊ฐœ์ˆ˜
int map[51][51];
int visited[51][51];
int dy[4] = { -1,1,0,0 };
int dx[4] = { 0,0,-1,1 };
void dfs(int x, int y) {
visited[x][y] = 1;
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if (0<=nx&&nx<N&&0<=ny&&ny<M) {
if (map[nx][ny] && !visited[nx][ny]) { //๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๊ณ , ์ง€๋ ์ด๊ฐ€ ์žˆ์„๋•Œ
visited[nx][ny] = 1;
dfs(nx, ny);
}
}
}
}
void reset() {
for (int i = 0; i < N; i++) {
for (int k = 0; k < M; k++) {
map [i][k] = 0;
visited[i][k] = 0;
}
}
}
int main() {
int T, a, b;
cin >> T;
while (T--) {
int cnt = 0;
reset();
cin >> M >> N >> K;
for (int i = 0; i < K; i++) {
cin >> a >> b;
map[b][a] = 1; //๋ฐฐ์ถ” ์œ„์น˜ ์ž…๋ ฅ
}
for (int i = 0; i < N; i++) { //์ง€๋ ์ด ํƒ์ƒ‰
for (int k = 0; k < M; k++) {
if (map[i][k] && !visited[i][k]) { // ์ง€๋ ์ด๊ฐ€ ์žˆ๊ณ , ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜์„๋•Œ
dfs(i, k);
cnt++;
}
}
}
cout << cnt << "\n";
}
}

GitHub

LinkedIn

GitHub

LinkedIn