파게로그
[백준 1012번] 유기농 배추 본문
문제 링크: 1012번 제목
https://www.acmicpc.net/problem/1012
연결된 노드의 집합의 개수를 구하는 문제이다. 앞선 문제처럼, visited
를 선언하지 않고도 0, 1, 2로 구분하는 방식으로 해서 문제를 풀어갈 수도 있다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
static int[] drow = {0, 0, 1, -1};
static int[] dcol = {1, -1, 0, 0};
static class Pos {
int row;
int col;
Pos(int row, int col) {
this.row = row;
this.col = col;
}
}
static void bfs(int i, int j, int[][] map, boolean[][] visited, int m, int n) {
Queue<Pos> queue = new LinkedList<>();
queue.offer(new Pos(i, j));
while (!queue.isEmpty()) {
Pos cur = queue.poll();
int row = cur.row;
int col = cur.col;
for (int d = 0; d < 4; d++) {
int nrow = row + drow[d];
int ncol = col + dcol[d];
if (nrow<0 || ncol<0 || nrow>=n || ncol>=m || visited[nrow][ncol] || map[nrow][ncol]!=1)
continue;
visited[nrow][ncol] = true;
queue.offer(new Pos(nrow, ncol));
}
}
}
static void solution(int m, int n, int[][] map) {
boolean[][] visited = new boolean[n][m];
int cnt = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
if (!visited[i][j] && map[i][j]==1) {
visited[i][j] = true;
bfs(i, j, map, visited, m, n);
cnt++;
}
System.out.println(cnt);
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int tcs = Integer.parseInt(new StringTokenizer(br.readLine()).nextToken());
for (int tc = 0; tc < tcs; tc++) {
int[] temp1 = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int m = temp1[0];
int n = temp1[1];
int k = temp1[2];
int[][] map = new int[n][m];
for (int i = 0; i < k; i++) {
int[] temp2 = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
map[temp2[1]][temp2[0]] = 1;
}
solution(m, n, map);
}
br.close();
}
}
'콤퓨타 왕왕기초 > PS' 카테고리의 다른 글
[백준 7576번] 토마토 (0) | 2020.12.30 |
---|---|
[백준 2178번] 미로 탐색 (0) | 2020.12.30 |
[백준 2667번] 단지 번호 붙이기 (0) | 2020.12.28 |
[백준 2606번] 바이러스 (0) | 2020.12.28 |
[백준 1260번] DFS와 BFS (0) | 2020.12.28 |
Comments