[BOJ] 2606번 바이러스 (Java)
풀이
그래프 탐색(DFS)를 통해 인접 정점의 개수를 구하는 문제.
인접행렬을 boolean형으로 선언해
탐색하는 인덱스의 값이 true이고 visited배열이 false라면 탐색하며, 결과값 cnt 증가.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main{
static boolean[][] arr;
static boolean[] visited;
static int N, cnt;
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
arr = new boolean[N+1][N+1];
visited = new boolean[N+1];
cnt = 0;
int M = Integer.parseInt(br.readLine());
for(int i =0 ; i < M ; i++) {
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int from = Integer.parseInt(st.nextToken());
int to = Integer.parseInt(st.nextToken());
arr[from][to] = true;
arr[to][from] = true;
}
dfs(1);
System.out.println(cnt);
}
public static void dfs(int start) {
visited[start] = true;
for(int i = 1 ; i <= N ; i++) {
if(arr[start][i] && !visited[i]) {
dfs(i);
cnt++;
}
}
}
}
Author And Source
이 문제에 관하여([BOJ] 2606번 바이러스 (Java)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dot2__/BOJ-2606번-바이러스-Java저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)