Skip to content

Commit 44ae41b

Browse files
authored
Merge pull request #762 from AlgorithmWithGod/zinnnn37
[20250828] BOJ / G3 / 줄 세우기 / 김민진
2 parents 6a05222 + 042258e commit 44ae41b

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
```java
2+
import java.io.BufferedReader;
3+
import java.io.BufferedWriter;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.io.OutputStreamWriter;
7+
import java.util.ArrayDeque;
8+
import java.util.ArrayList;
9+
import java.util.List;
10+
import java.util.Queue;
11+
import java.util.StringTokenizer;
12+
13+
public class BJ_2252_줄_세우기 {
14+
15+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
16+
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
17+
private static final StringBuilder sb = new StringBuilder();
18+
private static StringTokenizer st;
19+
20+
private static int N;
21+
private static int M;
22+
23+
private static int[] inDegree;
24+
private static List<Integer>[] graph;
25+
private static Queue<Integer> q;
26+
27+
public static void main(String[] args) throws IOException {
28+
init();
29+
sol();
30+
}
31+
32+
private static void init() throws IOException {
33+
st = new StringTokenizer(br.readLine());
34+
N = Integer.parseInt(st.nextToken());
35+
M = Integer.parseInt(st.nextToken());
36+
37+
inDegree = new int[N + 1];
38+
graph = new ArrayList[N + 1];
39+
for (int i = 1; i <= N; i++) {
40+
graph[i] = new ArrayList<>();
41+
}
42+
43+
for (int i = 0; i < M; i++) {
44+
st = new StringTokenizer(br.readLine());
45+
46+
int u = Integer.parseInt(st.nextToken());
47+
int v = Integer.parseInt(st.nextToken());
48+
49+
graph[u].add(v);
50+
inDegree[v]++;
51+
}
52+
53+
q = new ArrayDeque<>();
54+
}
55+
56+
private static void sol() throws IOException {
57+
for (int i = 1; i <= N; i++) {
58+
if (inDegree[i] == 0) {
59+
q.offer(i);
60+
}
61+
}
62+
63+
while (!q.isEmpty()) {
64+
int cur = q.poll();
65+
sb.append(cur).append(" ");
66+
67+
for (int i : graph[cur]) {
68+
inDegree[i]--;
69+
70+
if (inDegree[i] == 0) {
71+
q.offer(i);
72+
}
73+
}
74+
}
75+
76+
bw.write(sb.toString());
77+
bw.flush();
78+
bw.close();
79+
br.close();
80+
}
81+
82+
}
83+
```

0 commit comments

Comments
 (0)