알고리즘/문제풀이

[2606] 바이러스

BSHwan 2019. 9. 24. 23:03
반응형

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


import java.util.Scanner;
import java.util.ArrayList;

public class Main {
	
	static ArrayList<Integer>[] list;
	static boolean[] visited;
	static int answer;
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int M = sc.nextInt();
		
		list = new ArrayList[N+1];
		visited = new boolean[N+1];
		
		for(int i=0; i<=N; i++) {
			list[i] = new ArrayList<Integer>();
		}
		
		for(int i=0; i<M; i++) {
			int A = sc.nextInt();
			int B = sc.nextInt();
			
			list[A].add(B);
			list[B].add(A);
		}
		
		DFS(1);
		System.out.println(answer);
	}
	
	public static void DFS(int x) {
		visited[x] = true;
		
		for(int i=0; i<list[x].size(); i++) {
			int next = list[x].get(i);
			
			if(!visited[next]) {
				DFS(next);
				answer++;
			}
		}
	}
}

 

반응형