Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions g0rnn/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,7 @@
| 29์ฐจ์‹œ | 2025.07.22 | combination | [์†Œ๋ฌธ๋‚œ ์น ๊ณต์ฃผ](https://www.acmicpc.net/problem/1941) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/119 |
| 30์ฐจ์‹œ | 2025.07.28 | segment-tree | [์ปคํ”ผ์ˆ2](https://www.acmicpc.net/problem/1275) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/121 |
| 31์ฐจ์‹œ | 2025.08.03 | segment-tree | [์Œ์ฃผ์ฝ”๋”ฉ](https://www.acmicpc.net/problem/5676) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/127 |
| 32์ฐจ์‹œ | 2025.08.09 | topology-sort | [๋ฌธ์ œ์ง‘](https://www.acmicpc.net/problem/1766) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/128 |
| 33์ฐจ์‹œ | 2025.08.21 | tree | [ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„](https://www.acmicpc.net/problem/1167) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/134 |

---
54 changes: 54 additions & 0 deletions g0rnn/ํŠธ๋ฆฌ/33-g0rnn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package beakjoon;

import java.io.*;
import java.util.*;

public class Sol1167 {

static int v;
static List<List<int[]>> tree = new ArrayList<>();
static int endNode, max = -1;
static boolean[] visited;

public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
v = Integer.parseInt(br.readLine());
for (int i = 0; i <= v; i++) {
tree.add(new ArrayList<>());
}
for (int i = 0; i < v; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int cur = Integer.parseInt(st.nextToken());
while (true) {
int u = Integer.parseInt(st.nextToken());
if (u == -1) break;
int cost = Integer.parseInt(st.nextToken());
tree.get(cur).add(new int[]{u, cost});
}
}
br.close();

visited = new boolean[v + 1];
//visited[0] = true;
dfs(1, 0);

visited = new boolean[v + 1];
//visited[endNode] = true;
//max = -1;
dfs(endNode, 0);

System.out.println(max);
}

private static void dfs(int node, int len) {
if (len > max) {
max = len;
endNode = node;
}
visited[node] = true;
for (int[] next : tree.get(node)) {
if (visited[next[0]]) continue;
dfs(next[0], len + next[1]);
}
}
}