ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오

[백준] 2606번 바이러스 java

SZCODE 2022. 12. 12. 20:08

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

 

2606번: 바이러스

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

www.acmicpc.net

dfs 활용

import java.util.Scanner;

class Main {
	static int n, v, count;
	static int[][] arr, map;
	static boolean[] visited;
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		v = sc.nextInt();
		count = 0;
		arr = new int[v][2];
		map = new int[n + 1][n + 1];
		visited = new boolean[n+1];
		
		for (int i = 0; i < v; i++) {
			arr[i][0] = sc.nextInt();
			arr[i][1] = sc.nextInt();
		}

		for (int i = 0; i < v; i++) {
			int x = arr[i][0];
			int y = arr[i][1];
			map[x][y] = 1;
			map[y][x] = 1;
		}

		dfs(1);
	
		System.out.println(count);
	}

	public static void dfs(int i) {
		visited[i] = true;//1
	
		for (int j = 1; j < n+1; j++) {
			if(!visited[j] && map[i][j]==1) {
				count++;
				dfs(j);
			}
		}
		
		
	}
}