Hard deck/reindexing d2

023 : DFS = connected component

서버관리자 페페 2023. 6. 23. 12:29

 

 

 

 

 

하나의 DFS 세션에서 끝이나지 않는다면, (더 방문할 노드가 남아있다면) 해당 노드를 포함한 연결체와 떨어져있는 다른 연결체 방문이 필요하다

 

 

 

 

 

 

 

 

 

 

 

 

해당 EP가 왜 필요한가?

 

 

 

 

 

 

 

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

public class Main {

    static ArrayList<Integer>[] TP;
    static boolean[] visited;

    public static void main(String[] args) {

        // ISC
        Scanner sc = new Scanner(System.in);
        int V = sc.nextInt();
        int E = sc.nextInt();

        // D2F
        TP = new ArrayList[V+1];
        for (int i = 1; i <= V; i++) {
            TP[i] = new ArrayList<>();
        }
        for (int i = 1; i <= E; i++) {
            int s = sc.nextInt();
            int e = sc.nextInt();
            TP[s].add(e);
            TP[e].add(s);
        }
        visited = new boolean[V+1];

        // OP
        int counter = 0;
        for (int i = 1; i <= V; i++) {
            if (!visited[i]) {
                counter++;
                DFS(i);
            }
        }

        // OEC
        System.out.println(counter);
    }

    static void DFS(int now) {

        if (visited[now])
            return;

        visited[now] = true;
        for (int connected : TP[now]) {
            if (!visited[connected])
                DFS(connected);
        }
    }
}

 

'Hard deck > reindexing d2' 카테고리의 다른 글

015 : 버블 정렬  (0) 2023.06.23
025 : DFS 친구관계 파악하기  (0) 2023.06.23
028 : 트리의 지름 구하기  (0) 2023.06.23
010 : Deque + Sliding Window  (0) 2023.06.22
012 : Stack으로 오큰수 구하기  (0) 2023.06.21