From 0518c016e6846d3d440f19bbf33133c47ddd276a Mon Sep 17 00:00:00 2001 From: lkhyun <102892446+lkhyun@users.noreply.github.com> Date: Sat, 28 Jun 2025 17:06:41 +0900 Subject: [PATCH] =?UTF-8?q?[20250628]=20BOJ=20/=20G4=20/=20=EB=8F=84?= =?UTF-8?q?=EC=8B=9C=20=EB=B6=84=ED=95=A0=20=EA=B3=84=ED=9A=8D=20/=20?= =?UTF-8?q?=EC=9D=B4=EA=B0=95=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\355\225\240 \352\263\204\355\232\215.md" | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 "lkhyun/202506/28 BOJ G4 \353\217\204\354\213\234 \353\266\204\355\225\240 \352\263\204\355\232\215.md" diff --git "a/lkhyun/202506/28 BOJ G4 \353\217\204\354\213\234 \353\266\204\355\225\240 \352\263\204\355\232\215.md" "b/lkhyun/202506/28 BOJ G4 \353\217\204\354\213\234 \353\266\204\355\225\240 \352\263\204\355\232\215.md" new file mode 100644 index 00000000..0fc5c7c8 --- /dev/null +++ "b/lkhyun/202506/28 BOJ G4 \353\217\204\354\213\234 \353\266\204\355\225\240 \352\263\204\355\232\215.md" @@ -0,0 +1,79 @@ +```java +import java.util.*; +import java.io.*; + +public class Main{ + static class Edge{ + int u,v,weight; + + Edge(int u,int v,int w){ + this.u=u; + this.v=v; + this.weight=w; + } + } + static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + static StringTokenizer st; + static int N,M; + static List l; + static int[] parent; + + public static void main(String[] args) throws Exception{ + st = new StringTokenizer(br.readLine()); + N = Integer.parseInt(st.nextToken()); + M = Integer.parseInt(st.nextToken()); + + l = new ArrayList<>(); + parent = new int[N+1]; + for (int i = 1; i <= N; i++) { + parent[i] = i; + } + + for (int i = 0; i < M; i++) { + st = new StringTokenizer(br.readLine()); + int u = Integer.parseInt(st.nextToken()); + int v = Integer.parseInt(st.nextToken()); + int w = Integer.parseInt(st.nextToken()); + l.add(new Edge(u,v,w)); + } + l.sort((a, b) -> a.weight - b.weight); + + int count = N-1; + int sum = 0; + for(Edge e:l){ + if(merge(e.u,e.v)){ + count--; + if(count==0){ + break; + } + sum += e.weight; + } + } + bw.write(sum+"\n"); + bw.close(); + } + static int find(int cur){ + if(parent[cur]==cur){ + return cur; + }else{ + return parent[cur] = find(parent[cur]); + } + } + static boolean merge(int u, int v){ + int uRoot = find(u); + int vRoot = find(v); + + if(uRoot==vRoot){ + return false; + }else{ + if(uRoot