본문 바로가기

알고리즘/BAEKJOON

1922 네트워크 연결_Prim

1922번: 네트워크 연결 (acmicpc.net)

 

1922번: 네트워크 연결

이 경우에 1-3, 2-3, 3-4, 4-5, 4-6을 연결하면 주어진 output이 나오게 된다.

www.acmicpc.net

package Prim;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class Baekjoon_1922_네트워크연결 {
	
	public static class Node implements Comparable<Node> {
		int node; double weight; 
		
		public Node(int node, double weight) {
			this.node = node; this.weight = weight; 
		}
		
		@Override 
		public int compareTo(Node o) {
			return Double.compare(this.weight, o.weight); 
		}
	}


	public static void main(String[] args) throws Exception {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = null;
		int N = Integer.parseInt(br.readLine()); // 노드
		int M = Integer.parseInt(br.readLine()); // 간선
		
		boolean[] visited = new boolean[N+1];
		ArrayList<Node> list[] = new ArrayList[N+1];
		
		for(int i = 0; i <= N; i++) {
			list[i] = new ArrayList<>();
		}
		
		for(int i = 0; i < M; i++) {
			st = new StringTokenizer(br.readLine(), " ");
			int start = Integer.parseInt(st.nextToken());
			int target = Integer.parseInt(st.nextToken());
			int weight = Integer.parseInt(st.nextToken());
			list[start].add(new Node(target,weight));
			list[target].add(new Node(start,weight));
		}
		
		
		// 현재 연결된 정점들 중에 가장 가중치 적은 간선 고를 수 있음
		PriorityQueue<Node> q = new PriorityQueue<>(); 
		q.add(new Node(1,0)); // 첫번째 노드부터 시작(가중치 없음)
		
		int ans = 0;
		while(!q.isEmpty()) {
			
			Node n = q.poll();
			
			if(visited[n.node]) continue;
			visited[n.node] = true;
			
			ans += n.weight; // 가중치 증가
			
			// 방문하지 않은 노드 큐에 넣어줌
			for(Node next : list[n.node]) {
				if(!visited[next.node]) 
					q.add(next);
			}
		}
		
		System.out.println(ans);
		
		
	}

}

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

14621 나만 안되는 연애_Prim  (0) 2021.07.06
1197 최소 스패닝 트리_Kruskal  (0) 2021.07.05
21921 블로그_Sliding Window  (0) 2021.06.29
15565 귀여운 라이언_Two Pointers  (0) 2021.06.28
2531 회전초밥_Sliding Window  (0) 2021.06.28