Skip to content

Commit 271ec42

Browse files
authored
Merge pull request #604 from AlgorithmWithGod/JHLEE325
[20250804] BOJ / G5 / 선수과목 / 이준희
2 parents 9be56ff + a654fbd commit 271ec42

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
```java
2+
import java.io.*;
3+
import java.util.*;
4+
5+
public class Main {
6+
public static void main(String[] args) throws Exception {
7+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
8+
StringTokenizer st = new StringTokenizer(br.readLine());
9+
StringBuilder sb = new StringBuilder();
10+
11+
int n = Integer.parseInt(st.nextToken());
12+
int m = Integer.parseInt(st.nextToken());
13+
14+
List<List<Integer>> graph = new ArrayList<>(n + 1);
15+
for (int i = 0; i <= n; i++) graph.add(new ArrayList<>());
16+
17+
int[] indeg = new int[n + 1];
18+
int[] semester = new int[n + 1];
19+
20+
for (int i = 0; i < m; i++) {
21+
st = new StringTokenizer(br.readLine());
22+
int a = Integer.parseInt(st.nextToken());
23+
int b = Integer.parseInt(st.nextToken());
24+
graph.get(a).add(b);
25+
indeg[b]++;
26+
}
27+
28+
Deque<Integer> q = new ArrayDeque<>();
29+
for (int i = 1; i <= n; i++) {
30+
if (indeg[i] == 0) {
31+
semester[i] = 1;
32+
q.offer(i);
33+
}
34+
}
35+
36+
while (!q.isEmpty()) {
37+
int cur = q.poll();
38+
for (int nxt : graph.get(cur)) {
39+
semester[nxt] = Math.max(semester[nxt], semester[cur] + 1);
40+
if (--indeg[nxt] == 0) q.offer(nxt);
41+
}
42+
}
43+
44+
for (int i = 1; i <= n; i++) {
45+
sb.append(semester[i]).append(' ');
46+
}
47+
System.out.println(sb.toString().trim());
48+
}
49+
}
50+
51+
```

0 commit comments

Comments
 (0)