Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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 @@ -32,5 +32,7 @@
| 28μ°¨μ‹œ | 2025.06.27 | BFS | [상어 쀑학ꡐ](https://www.acmicpc.net/problem/21609) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/115 |
| 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 |

---
51 changes: 51 additions & 0 deletions g0rnn/topology-sort/32-g0rnn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package beakjoon;

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

public class Sol1766 {
static int n, m;

public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());

int[] indegree = new int[n + 1];
List<List<Integer>> graph = new ArrayList<>();
for (int i = 0; i <= n; i++) {
graph.add(new ArrayList<>());
}

for (int i = 0; i < m; i++) {
st = new StringTokenizer(br.readLine());
int u = Integer.parseInt(st.nextToken());
int v = Integer.parseInt(st.nextToken());
indegree[v] += 1;
graph.get(u).add(v);
}
br.close();

PriorityQueue<Integer> q = new PriorityQueue<>();
for (int i = 1; i <= n; i++) {
if (indegree[i] == 0) q.offer(i);
}

StringBuilder sb = new StringBuilder();
while (!q.isEmpty()) {
Integer cur = q.poll();
sb.append(cur);
sb.append(" ");

for (int next : graph.get(cur)) {
indegree[next] -= 1;
if (indegree[next] == 0) {
q.offer(next);
}
}
}
System.out.println(sb);
}

}