From 1b8b9f8fc6abcd01567eb15513f660d079f4226d Mon Sep 17 00:00:00 2001
From: dpfls0922 <dpfls0922@naver.com>
Date: Mon, 10 Mar 2025 10:56:41 +0900
Subject: [PATCH 1/6] =?UTF-8?q?=EC=83=81=EA=B7=BC=EC=9D=B4=EC=9D=98=20?=
 =?UTF-8?q?=EC=97=AC=ED=96=89=5F9372.java?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 06_mst/lee/9372.java | 74 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 74 insertions(+)
 create mode 100644 06_mst/lee/9372.java

diff --git a/06_mst/lee/9372.java b/06_mst/lee/9372.java
new file mode 100644
index 0000000..34f11e8
--- /dev/null
+++ b/06_mst/lee/9372.java
@@ -0,0 +1,74 @@
+import java.io.*;
+import java.util.*;
+
+public class Main {
+	private static int N, M;
+	private static boolean[] visited;
+	private static ArrayList<Integer>[] plane;
+	
+	public static void main(String[] args) throws NumberFormatException, IOException {
+		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+		StringBuilder sb = new StringBuilder();
+		
+		int T = Integer.parseInt(br.readLine());
+		
+		for (int tc = 1; tc <= T; tc++) {
+
+			StringTokenizer st = new StringTokenizer(br.readLine());
+			N = Integer.parseInt(st.nextToken());
+			M = Integer.parseInt(st.nextToken());
+			
+			plane = new ArrayList[N + 1];
+			for (int i = 1; i <= N; i++) {
+				plane[i] = new ArrayList<Integer>();
+			}
+			
+			for (int i = 1; i <= M; i++) {
+				st = new StringTokenizer(br.readLine());
+				int a = Integer.parseInt(st.nextToken());
+				int b = Integer.parseInt(st.nextToken());
+				
+				plane[a].add(b);
+				plane[b].add(a);
+			}
+			
+			visited = new boolean[N + 1];
+			sb.append(dfs(1)).append("\n"); // 방법 1
+			sb.append(bfs(1) - 1).append("\n"); // 방법 2
+			sb.append((N - 1)).append("\n"); // 방법 3 (최소 신장 트리의 성질 : 간선의 개수 == 정점의 개수 - 1)
+		}
+		System.out.println(sb.toString());
+	}
+
+	private static int dfs(int start) {
+		visited[start] = true;
+		
+		int count = 0;
+		for (int destination : plane[start]) {
+			if (!visited[destination]) {
+				count += dfs(destination) + 1;
+			}
+		}
+		return count;
+	}
+
+    private static int bfs(int start) {
+		ArrayDeque<Integer> queue = new ArrayDeque<>();
+		queue.add(start);
+		visited[start] = true;
+
+		int count = 0;
+		while (!queue.isEmpty()) {
+			count++;
+			int current = queue.poll();
+			
+			for (int destination : plane[current]) {
+				if (!visited[destination]) {
+					visited[destination] = true;
+					queue.add(destination);
+				}
+			}
+		}
+		return count;
+	}
+}

From 74032a5b098062c43fdb0d27ea78b640ad79eda2 Mon Sep 17 00:00:00 2001
From: dpfls0922 <dpfls0922@naver.com>
Date: Mon, 10 Mar 2025 10:57:29 +0900
Subject: [PATCH 2/6] =?UTF-8?q?=EC=B5=9C=EC=86=8C=20=EC=8A=A4=ED=8C=A8?=
 =?UTF-8?q?=EB=8B=9D=20=ED=8A=B8=EB=A6=AC=5F1197.java?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 06_mst/lee/1197.java | 68 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)
 create mode 100644 06_mst/lee/1197.java

diff --git a/06_mst/lee/1197.java b/06_mst/lee/1197.java
new file mode 100644
index 0000000..7f8312c
--- /dev/null
+++ b/06_mst/lee/1197.java
@@ -0,0 +1,68 @@
+import java.io.*;
+import java.util.*;
+
+public class Main {
+	static class Edge {
+		int to;
+		int weight;
+		
+		Edge(int to, int weight) {
+			this.to = to;
+			this.weight = weight;
+		}
+	}
+	
+	private static int V, E;
+	private static List<Edge>[] edges;
+	private 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());
+	
+		V = Integer.parseInt(st.nextToken());
+		E = Integer.parseInt(st.nextToken());
+		
+		edges = new List[V + 1];
+		for (int i = 1; i <= V; i++) {
+			edges[i] = new ArrayList<>();
+		}
+		for (int i = 0; i < E; i++) {
+			st = new StringTokenizer(br.readLine());
+			int a = Integer.parseInt(st.nextToken());
+			int b = Integer.parseInt(st.nextToken());
+			int c = Integer.parseInt(st.nextToken());
+			edges[a].add(new Edge(b, c));
+			edges[b].add(new Edge(a, c)); 
+		}
+		
+		System.out.println(prim(1));
+	}
+
+	
+	private static int prim(int start) {
+		int totalWeight = 0;
+		visited = new boolean[V + 1];
+        PriorityQueue<Edge> pq = new PriorityQueue<>(Comparator.comparingInt(a -> a.weight)); 
+		
+        pq.add(new Edge(1, 0));
+		
+		while (!pq.isEmpty()) {
+			Edge current = pq.poll();
+            int node = current.to;
+            int weight = current.weight;
+            
+            if (visited[node]) continue;
+            
+            visited[node] = true;
+            totalWeight += weight;
+			
+			for (Edge neighbor : edges[node]) {
+				if (!visited[neighbor.to]) {
+					pq.add(neighbor);
+				}
+			}
+		}
+        return totalWeight;
+	}
+}

From 9bd10e41581e06f44756d62bd6781aa4de99a84d Mon Sep 17 00:00:00 2001
From: dpfls0922 <dpfls0922@naver.com>
Date: Tue, 11 Mar 2025 11:52:29 +0900
Subject: [PATCH 3/6] =?UTF-8?q?=ED=96=89=EC=84=B1=20=EC=97=B0=EA=B2=B0=5F1?=
 =?UTF-8?q?6398.java?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 06_mst/lee/16398.java | 61 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)
 create mode 100644 06_mst/lee/16398.java

diff --git a/06_mst/lee/16398.java b/06_mst/lee/16398.java
new file mode 100644
index 0000000..925ed55
--- /dev/null
+++ b/06_mst/lee/16398.java
@@ -0,0 +1,61 @@
+import java.io.*;
+import java.util.*;
+
+public class Main {
+	
+	static class Edge {
+		int to;
+		int weight;
+		
+		Edge(int to, int weight) {
+			this.to = to;
+			this.weight = weight;
+		}
+	}
+	
+	private static int N;
+	private static int[][] planet;
+	private static boolean[] inMST;
+
+	public static void main(String[] args) throws IOException {
+		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+	
+		N = Integer.parseInt(br.readLine());
+		planet = new int[N + 1][N + 1];
+		for (int i = 1; i <= N; i++) {
+			StringTokenizer st = new StringTokenizer(br.readLine());
+			for (int j = 1; j <= N; j++) {
+				planet[i][j] = Integer.parseInt(st.nextToken());
+			}
+		}
+		
+		System.out.println(prim(1));
+	}
+
+	
+	private static long prim(int start) {
+		long totalWeight = 0;
+		inMST = new boolean[N + 1];
+        PriorityQueue<Edge> pq = new PriorityQueue<>(Comparator.comparingInt(a -> a.weight)); 
+		
+        pq.add(new Edge(1, 0));
+		
+		while (!pq.isEmpty()) {
+			Edge current = pq.poll();
+            int node = current.to;
+            int weight = current.weight;
+            
+            if (inMST[node]) continue;
+            
+            inMST[node] = true;
+            totalWeight += weight;
+			
+			for (int i = 1; i <= N; i++) {
+				if (!inMST[i]) {
+					pq.add(new Edge(i, planet[node][i]));
+				}
+			}
+		}
+        return totalWeight;
+	}
+}

From 9ae65b77f9c8394e6ed76410bcd4528d55f951e6 Mon Sep 17 00:00:00 2001
From: dpfls0922 <dpfls0922@sookmyung.ac.kr>
Date: Wed, 12 Mar 2025 08:44:39 +0900
Subject: [PATCH 4/6] =?UTF-8?q?=EB=8F=84=EC=8B=9C=20=EB=B6=84=ED=95=A0=20?=
 =?UTF-8?q?=EA=B3=84=ED=9A=8D=5F1647.java?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 06_mst/lee/1647.java | 67 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)
 create mode 100644 06_mst/lee/1647.java

diff --git a/06_mst/lee/1647.java b/06_mst/lee/1647.java
new file mode 100644
index 0000000..c64e845
--- /dev/null
+++ b/06_mst/lee/1647.java
@@ -0,0 +1,67 @@
+import java.io.*;
+import java.util.*;
+
+public class Main {
+    static class Edge {
+        int to;
+        int weight;
+
+        public Edge(int to, int weight) {
+            this.to = to;
+            this.weight = weight;
+        }
+    }
+
+    static int N, M;
+    static ArrayList<Edge>[] cities;
+    private static boolean[] visited;
+
+    public static void main(String[] args) throws Exception {
+        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+        StringTokenizer st = new StringTokenizer(br.readLine());
+
+        N = Integer.parseInt(st.nextToken());
+        M = Integer.parseInt(st.nextToken());
+        cities = new ArrayList[N + 1];
+        for (int i = 1; i <= N; i++) {
+            cities[i] = new ArrayList<>();
+        }
+        for (int i = 1; i <= M; i++) {
+            st = new StringTokenizer(br.readLine());
+            int a = Integer.parseInt(st.nextToken());
+            int b = Integer.parseInt(st.nextToken());
+            int c = Integer.parseInt(st.nextToken());
+            cities[a].add(new Edge(b, c));
+            cities[b].add(new Edge(a, c));
+        }
+        System.out.println(prim());
+    }
+
+    private static int prim() {
+        int totalWeight = 0;
+        int maxWeight = 0;
+        visited = new boolean[N + 1];
+        PriorityQueue<Edge> pq = new PriorityQueue<>((a, b) -> a.weight - b.weight);
+
+        pq.add(new Edge(1, 0));
+
+        while (!pq.isEmpty()) {
+            Edge current = pq.poll();
+            int node = current.to;
+            int weight = current.weight;
+
+            if (visited[node]) continue;
+
+            visited[node] = true;
+            totalWeight += weight;
+            maxWeight = Math.max(maxWeight, weight);
+
+            for (Edge neighbor : cities[node]) {
+                if (!visited[neighbor.to]) {
+                    pq.add(neighbor);
+                }
+            }
+        }
+        return totalWeight - maxWeight;
+    }
+}
\ No newline at end of file

From 58d2543dd3e54452c74a52047637f3b9e274450a Mon Sep 17 00:00:00 2001
From: dpfls0922 <dpfls0922@naver.com>
Date: Wed, 12 Mar 2025 23:59:26 +0900
Subject: [PATCH 5/6] =?UTF-8?q?=EC=A0=84=EA=B8=B0=EA=B0=80=20=EB=B6=80?=
 =?UTF-8?q?=EC=A1=B1=ED=95=B4=5F10423.java?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 06_mst/lee/Main.java | 72 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)
 create mode 100644 06_mst/lee/Main.java

diff --git a/06_mst/lee/Main.java b/06_mst/lee/Main.java
new file mode 100644
index 0000000..a60adba
--- /dev/null
+++ b/06_mst/lee/Main.java
@@ -0,0 +1,72 @@
+import java.io.*;
+import java.util.*;
+
+public class Main {
+    static class Edge {
+        int to;
+        int weight;
+
+        public Edge(int to, int weight) {
+            this.to = to;
+            this.weight = weight;
+        }
+    }
+
+    static int N, M, K;
+    static ArrayList<Edge>[] powerStations;
+    static boolean[] visited;
+
+    public static void main(String[] args) throws Exception {
+        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+        StringTokenizer st = new StringTokenizer(br.readLine());
+
+        N = Integer.parseInt(st.nextToken());
+        M = Integer.parseInt(st.nextToken());
+        K = Integer.parseInt(st.nextToken());
+
+        powerStations = new ArrayList[N + 1];
+        for (int i = 0; i <= N; i++) {
+            powerStations[i] = new ArrayList<>();
+        }
+        st = new StringTokenizer(br.readLine());
+        for (int i = 0; i < K; i++) {
+            int num = Integer.parseInt(st.nextToken());
+            powerStations[0].add(new Edge(num, 0));
+            powerStations[num].add(new Edge(0, 0));
+        }
+        for (int i = 1; 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());
+            powerStations[u].add(new Edge(v, w));
+            powerStations[v].add(new Edge(u, w));
+        }
+        System.out.println(prim());
+    }
+
+    private static int prim() {
+        int totalWeight = 0;
+        visited = new boolean[N + 1];
+        PriorityQueue<Edge> pq = new PriorityQueue<>((a, b) -> a.weight - b.weight);
+        pq.add(new Edge(1, 0));
+
+        while (!pq.isEmpty()) {
+            Edge current = pq.poll();
+            int node = current.to;
+            int weight = current.weight;
+
+            if (visited[node]) continue;
+
+            visited[node] = true;
+            totalWeight += weight;
+
+            for (Edge neighbor : powerStations[node]) {
+                if (!visited[neighbor.to]) {
+                    pq.add(neighbor);
+                }
+            }
+        }
+        return totalWeight;
+    }
+}
\ No newline at end of file

From f075763e56331f64444a02542d5c971fa08a889c Mon Sep 17 00:00:00 2001
From: dpfls0922 <dpfls0922@naver.com>
Date: Thu, 13 Mar 2025 00:00:58 +0900
Subject: [PATCH 6/6] =?UTF-8?q?chore:=20[10423]=20=ED=8C=8C=EC=9D=BC?=
 =?UTF-8?q?=EB=AA=85=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 06_mst/lee/{Main.java => 10423.java} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename 06_mst/lee/{Main.java => 10423.java} (100%)

diff --git a/06_mst/lee/Main.java b/06_mst/lee/10423.java
similarity index 100%
rename from 06_mst/lee/Main.java
rename to 06_mst/lee/10423.java