https://www.acmicpc.net/problem/2252
ํ์ด
์์์ ๋ ฌ ๊ธฐ์ด ๋ฌธ์ .
(ํค ์์ ์ฌ๋) → (ํค ํฐ ์ฌ๋) ์ด๋ ๊ฒ ๊ฐ์ ์ ์ด์ด์ฃผ๊ณ
indegree๊ฐ 0์ธ ๋ ธ๋๋ฅผ ํ๋์ฉ ์ง์๋๊ฐ๋ ์์ผ๋ก ์ ๋ ฌํ๊ธฐ.
์ฝ๋
๋๋ณด๊ธฐ
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
ArrayList<ArrayList<Integer>> adj = new ArrayList<>();
int[] indegree = new int[N + 1];
for (int i = 0; i <= N; i++) {
adj.add(new ArrayList<>());
}
while (M-- > 0) {
st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
adj.get(A).add(B);
indegree[B]++;
}
Queue<Integer> que = new LinkedList<>();
StringBuilder result = new StringBuilder();
int cnt = 0;
for (int i = 1; i <= N; i++) {
if (indegree[i] == 0) {
que.add(i);
}
}
while (!que.isEmpty()) {
int cur = que.remove();
result.append(cur).append(' ');
cnt++;
for (int next : adj.get(cur)) {
if (--indegree[next] == 0) {
que.add(next);
}
}
}
if (cnt < N) {
System.out.println("Cycle detected");
} else {
System.out.println(result);
}
br.close();
}
}
'Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ๋ฐฑ์ค 31623 - Room Temperature (0) | 2024.03.21 |
---|---|
[Java] ๋ฐฑ์ค 31443 - ์ค์์ด (1) | 2024.03.15 |
[Java] ๋ฐฑ์ค 1724 - ๊ทธ๋ฆผํ (0) | 2024.03.13 |
[Java] ๋ฐฑ์ค 1999 - ์ต๋์ต์ (0) | 2024.03.01 |
[Java] ๋ฐฑ์ค 16946 - ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ 4 (0) | 2024.02.29 |