개발일지

[백준] 네트워크 연결 (1922) 본문

알고리즘

[백준] 네트워크 연결 (1922)

devbh 2020. 3. 3. 02:11



import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Main {
    static int[] arr;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        arr = new int[N+1];
        for(int i=1;i<=N;i++) {
            arr[i] = i;
        }
        int M = sc.nextInt();
        int ans = 0;
        int[][] edge = new int[M][3];
        for(int i=0;i<M;i++) {
            edge[i][0] = sc.nextInt();
            edge[i][1] = sc.nextInt();
            edge[i][2] = sc.nextInt();
        }
        Arrays.sort(edge, new Comparator<int[]>() {

            @Override
            public int compare(int[] o1, int[] o2) {
                // TODO Auto-generated method stub
                return o1[2] - o2[2];
            }
        });
        for(int i=0;i<M;i++) {
            int num1 = edge[i][0];
            int num2 = edge[i][1];
            if(find(num1)!=find(num2)) {

                union(num1,num2);
                ans+= edge[i][2];
            }
        }
        System.out.println(ans);
    }
    static void union(int a,int b) {
        int num1 = find(a);
        int num2 = find(b);
        if(num1>num2) {
            int temp = num2;
            num2 = num1;
            num1 = temp;
        }
        arr[num2] = num1;
    }
    static int find(int a) {
        if(arr[a] == a) {
            return a;
        }
        return arr[a] = find(arr[a]);
    }
}

'알고리즘' 카테고리의 다른 글

[백준] 키 순서(2458)  (0) 2020.03.19
[백준] LCA2(11438)  (0) 2020.03.03
[백준] 줄 세우기(2252)  (0) 2020.03.03
[백준] 집합의 표현 (1717)  (0) 2020.02.21
게리맨더링2  (0) 2019.11.14
Comments