From b769645a536306f24b88eea383491170e27fb220 Mon Sep 17 00:00:00 2001 From: LiiNi-coder <97495437+LiiNi-coder@users.noreply.github.com> Date: Sun, 25 Jan 2026 17:55:18 +0900 Subject: [PATCH] =?UTF-8?q?[20260125]=20BOJ=20/=20G4=20/=20=ED=8A=B8?= =?UTF-8?q?=EB=A6=AC=EC=9D=98=20=EC=A7=80=EB=A6=84=20/=20=EC=9D=B4?= =?UTF-8?q?=EC=9D=B8=ED=9D=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\354\235\230 \354\247\200\353\246\204.md" | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 "LiiNi-coder/202601/25 BOJ \355\212\270\353\246\254\354\235\230 \354\247\200\353\246\204.md" diff --git "a/LiiNi-coder/202601/25 BOJ \355\212\270\353\246\254\354\235\230 \354\247\200\353\246\204.md" "b/LiiNi-coder/202601/25 BOJ \355\212\270\353\246\254\354\235\230 \354\247\200\353\246\204.md" new file mode 100644 index 00000000..271b1e97 --- /dev/null +++ "b/LiiNi-coder/202601/25 BOJ \355\212\270\353\246\254\354\235\230 \354\247\200\353\246\204.md" @@ -0,0 +1,69 @@ +```java +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Deque; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.w3c.dom.Node; + +public class Main{ + private static int N; + private static Map> Graph = new HashMap>(); + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in )); + N = Integer.parseInt(br.readLine()); + int t = N; + while(t-- > 1){ + String[] tokens = br.readLine().split(" "); + int parent = Integer.parseInt(tokens[0] ); + int child = Integer.parseInt(tokens[1]); + int weight = Integer.parseInt(tokens[2] ); + Graph.putIfAbsent(parent, new ArrayList()); + Graph.get(parent).add(new int[]{child, weight}); + Graph.putIfAbsent(child, new ArrayList()); + Graph.get(child).add(new int[]{parent, weight}); + } + if(N == 1){ + System.out.println(0); + }else{ + int[] temp = bfs(1); + temp = bfs(temp[0]); + System.out.println(temp[1] ); + + } + br.close(); + } + + private static int[] bfs(int start) { + Deque q = new ArrayDeque(); + boolean[] visited = new boolean[10_001]; + visited[start] = true; + int maxDist = 0; + int nodeHavingMaxDist = 0; + q.offer(new int[]{start, 0}); + while(!q.isEmpty()){ + int[] qItem = q.poll(); + int v = qItem[0]; + int dist = qItem[1]; + for(int[] nextInfo : Graph.get(v)){ + int nv = nextInfo[0]; + int weight = nextInfo[1]; + if(visited[nv]) + continue; + q.offer(new int[]{nv, dist + weight}); + visited[nv] = true; + } + if (maxDist < dist) { + nodeHavingMaxDist = v; + maxDist = Math.max(maxDist, dist); + } + } + return new int[]{nodeHavingMaxDist, maxDist}; + } +} +```