JAVA Developer Training
40. 2606번 바이러스 본문
https://www.acmicpc.net/problem/2606
2606번: 바이러스
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어
www.acmicpc.net
바로전에 포스팅한 문제와 동일한 그래프 문제
DFS를 이용해 해결했다
고려해야할 점은
1. 서로 선으로 연결되어 있다는점
2. 때문에 1~2와 2~1은 같다고 처리해주어야한다는 것
1. 입력부분
public static void main(String[] args) throws IOException,NumberFormatException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
m = Integer.parseInt(br.readLine());
map = new int[n+1][n+1]; //탐색 경로 저장
visited = new boolean[n+1]; //탐색확인
for(int i=0; i<m; i++){
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
map[a][b] = map[b][a] = 1;
//둘은 같은 경우의수
}
dfs(1);
//1부터 탐색 시작
System.out.println(cnt);
}
2. 탐색 부분
public static void dfs(int x) {
visited[x] = true;
for(int y=0; y<=n; y++){ //y<n 이 아니다 y<=n 이다
if(map[x][y]==1 && !visited[y]) {
cnt++;
dfs(y);
}
}
}
결과
'백준 알고리즘' 카테고리의 다른 글
42. 10870번 피보나치 수 5 (0) | 2021.12.17 |
---|---|
41. 12851번 숨바꼭질2 (0) | 2021.11.04 |
39. 1743번 음식물 피하기 (0) | 2021.11.04 |
38. 2667번 단지번호붙이기 (0) | 2021.11.04 |
34. 2504번 괄호의 값 (0) | 2021.10.26 |