보라코딩

백준 자바 :: 연결요소의 개수 본문

백준(java)

백준 자바 :: 연결요소의 개수

new 보라 2024. 7. 1. 20:52

 

 

 


import java.util.*;
import java.io.*;

public class Main {
    
    static ArrayList<Integer>[] A;
    static boolean[] visited ;
    
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken()); // 정점의 개수
        int m = Integer.parseInt(st.nextToken()); // 간선의 개수
        
        A = new ArrayList[n+1]; // 1부터 시작해서
        visited = new boolean[n+1];
        
        for(int i = 1; i < n+1; i++){
            A[i] = new ArrayList<Integer>();
        }
        
        for(int i = 0; i < m; i++){
            st = new StringTokenizer(br.readLine());
            int first = Integer.parseInt(st.nextToken());
            int end = Integer.parseInt(st.nextToken());
            
            A[first].add(end);
            A[end].add(first);
        }
        
        int count = 0;
        
        for (int i = 1; i < n+1; i++){ // 1부터 시작
            if(!visited[i]){ // 방문하지 않은 노드가 있으면
                count++;
                DFS(i);
            }
        }
        
        System.out.println(count);
    }
    
    static void DFS(int node){
        // 현재노드와 방문노드가 같으면 return
        if(visited[node]){
            return;
        }
                
        // 현재 노드 방문 기록하기
        visited[node] = true;
        
        // 현재 노드의 연결 노드 중 방문하지 않은 노드로 DFS 실행
        for(int number : A[node]){
            if(!visited[number]){
                DFS(number);
            }
        }
    }
}

 

'백준(java)' 카테고리의 다른 글

백준 자바 :: DFS와 BFS  (0) 2024.07.04
백준 자바 :: 신기한 소수 (DFS)  (0) 2024.07.02
백준 문제집  (0) 2024.04.08
백준 :: 완전탐색  (0) 2024.01.16
백준 :: 그리디  (0) 2024.01.02