본문 바로가기
BaekJoon/JAVA

[백준] 2606번 : 바이러스(JAVA)

by GrayChoi 2020. 2. 9.
반응형

https://www.acmicpc.net/problem/2606

 

2606번: 바이러스

첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어진다. 이어서 그 수만큼 한 줄에 한 쌍씩 네트워크 상에서 직접 연결되어 있는 컴퓨터의 번호 쌍이 주어진다.

www.acmicpc.net


위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 28단계

 

DFS와 BFS의 카테고리에 포함되어 있는 문제이다.

 

1260번의 문제와 비슷하면서 동일한 문제이다.

 

DFS로 문제를 풀었으며

 

1번 컴퓨터(정점)부터 다음 컴퓨터를 탐색 할 때 마다 결과값을 한 개씩 늘려주었다.

 

import java.util.Scanner;
import java.io.IOException;

public class Question_2606 {
	
	static int map[][];
	static boolean visit[];
	static int n, m;
	static int result = 0;
	
	public static void main(String[] agrs) throws IOException {
		Scanner sc = new Scanner(System.in);
		
		n = sc.nextInt();
		m = sc.nextInt();
		
		map = new int[n+1][n+1];
		visit = new boolean[n+1];
		
		int num1, num2;
		
		for(int i = 1; i <= m; i++) {
			num1 = sc.nextInt();
			num2 = sc.nextInt();
			map[num1][num2] = map[num2][num1] = 1;
		}
		
		dfs(1);
		
		System.out.println(result);
	}
	
	public static void dfs(int d) {
		visit[d] = true;
		
		for(int i = 1; i < n + 1; i++) {
			if(map[d][i] == 1 && !visit[i]) {
				result++;
				dfs(i);
			}
		}
	}
}
반응형

'BaekJoon > JAVA' 카테고리의 다른 글

[백준] 5585번 : 거스름돈(JAVA)  (0) 2020.02.12
[백준] 1110번 : 더하기 사이클(JAVA)  (0) 2020.02.12
[백준] 2588번 : 곱셈(JAVA)  (0) 2020.02.12
[백준] 1008번 : A/B(JAVA)  (0) 2020.02.12
[백준] 2557번 : Hello World(JAVA)  (0) 2020.02.12

댓글