[DFS] 백준 2606번 : 바이러스 - Java백준/BFS & DFS2025. 5. 19. 17:20
Table of Contents
https://www.acmicpc.net/problem/2606
✅ 문제



재귀함수 Depth

🔑 풀이
import java.io.*;
import java.util.*;
public class Main {
static boolean[][] graph;
static boolean[] visited; // 재방문 방지 배열
static int N, M;
static int answer;
public static void dfs(int idx) {
visited[idx] = true;
answer++; // dfs 호출되는 횟수만큼 몇개의 컴퓨터가 연결되어있는지 의미
for (int i = 1; i <= N; i++) {
if (!visited[i] && graph[idx][i]) {
dfs(i);
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
N = Integer.parseInt(br.readLine());
M = Integer.parseInt(br.readLine());
graph = new boolean[N + 1][N + 1];
visited = new boolean[N + 1];
// 1. graph에 연결 정보 채우기
int x, y;
for (int i = 0; i < M; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
x = Integer.parseInt(st.nextToken());
y = Integer.parseInt(st.nextToken());
graph[x][y] = true;
graph[y][x] = true;
}
// 2. dfs(재귀함수) 호출
dfs(1);
// 3. 출력
bw.write(String.valueOf(answer - 1)); // 1번 컴퓨터를 제외한 값이므로 1 뺌
br.close();
bw.close();
}
}
참고
https://www.youtube.com/watch?v=z1ijEwTdq0w
'백준 > BFS & DFS' 카테고리의 다른 글
| [DFS] 백준 24479번 : 알고리즘 수업 - 깊이 우선 탐색1 - Java (0) | 2025.05.21 |
|---|---|
| [DFS] 백준 11724번 : 연결 요소의 개수 - Java (0) | 2025.05.21 |
| 99클럽 코테 스터디 4일차 TIL - 백준 2468번 : 안전 영역 (0) | 2025.04.04 |
| [BFS] 백준 14502번 : 연구소 - Java (0) | 2025.02.24 |
@킴준현 :: 차근차근 꾸준히
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!