[개발관련]/코테준비
[백준] 바이러스
도담빠
2021. 6. 13. 17:23
반응형
package com.ji.beakjoon;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
public class Virus {
static int computerCnt, connectPairCnt;
static int[][] graph;
static boolean[] DFSisVisited;
static List<Integer> DFSvisitArr;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
computerCnt = Integer.parseInt(br.readLine());// 노드 갯수
connectPairCnt = Integer.parseInt(br.readLine()); // 간선 갯수
graph = new int[computerCnt + 1][computerCnt + 1];
DFSisVisited = new boolean[computerCnt + 1]; //방문 정보 초기화
DFSvisitArr = new ArrayList<Integer>();
for (int i = 0; i < connectPairCnt; i++) {
String[] comPairNum = String.valueOf(br.readLine()).split(" ");
int a = Integer.parseInt(comPairNum[0]);
int b = Integer.parseInt(comPairNum[1]);
graph[a][b] = 1;
graph[b][a] = 1;
}
for (int i = 0; i < computerCnt + 1; i++) {
DFSisVisited[i] = false;
}
dfs(1);
Integer result = DFSvisitArr.size() - 1;
bw.write(String.valueOf(result));
br.close();
bw.flush();
bw.close();
}
static void dfs(int nodeNum) {
// 방문한 노드 번호에 대한 boolean 처리
DFSisVisited[nodeNum] = true;
// 방문한 순서에 대한 노드 정보 리스트 저장
DFSvisitArr.add(nodeNum);
for (int i = 1; i <= computerCnt; i++) {
if (graph[nodeNum][i] == 1 && DFSisVisited[i] == false) {
dfs(i);
}
}
}
}
728x90