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



import java.util.Scanner;

public class Main {
    static int vCnt;
    static int pair_cnt;
    
    static int [][] vMap;
    static int [] chkVisited;
    
    static int count;
    
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        vCnt = scan.nextInt();
        pair_cnt = scan.nextInt();
        
        vMap = new int[vCnt+1][vCnt+1];
        chkVisited = new int [vCnt+1];
        count = 0;
        //인접행렬 만들기
        for (int i = 0; i < pair_cnt; i++) {
            int a = scan.nextInt();
            int b = scan.nextInt();
            
            vMap[a][b] = vMap[b][a] =1 ;
            
        }
        
/*        for (int i = 0; i < vMap.length ; i++) {
            for (int j = 0 ; j < vMap[i].length ; j++) {
                System.out.print(vMap[i][j]);
            }
            System.out.println();
        }*/
        
        dfs(1);
        System.out.println(count);
    }
    
    public static void dfs (int start) {
        chkVisited[start] = 1;
        
        for(int i = 1 ; i < chkVisited.length ; i ++) {
            if(vMap[start][i] == 1 && chkVisited[i] == 0) {
//                System.out.println(start +"->"+ i);
                count ++;
                dfs(i);
            }
        }
    }
}

+ Recent posts

"여기"를 클릭하면 광고 제거.