풀이
위상정렬을 사용하여 해결했습니다.
코드
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = 10;
StringBuilder sb = new StringBuilder();
for (int tc = 1; tc <= T; tc++) {
sb.append("#").append(tc).append(" ");
int V = sc.nextInt();
int E = sc.nextInt();
int[] indegree = new int[V];
int[][] adj = new int[V][V];
for (int i = 0; i < E; ++i) {
int from = sc.nextInt() - 1;
int to = sc.nextInt() - 1;
adj[from][to] = 1;
indegree[to]++;
}
Queue<Integer> queue = new LinkedList<Integer>();
for (int i = 0; i < V; ++i) {
if (indegree[i] == 0) {
queue.offer(i);
}
}
while (!queue.isEmpty()) {
int node = queue.poll();
sb.append(node + 1).append(" ");
for (int i = 0; i < V; ++i) {
if (adj[node][i] == 1) {
indegree[i]--;
if (indegree[i] == 0) {
queue.offer(i);
}
}
}
}
sb.append("\n");
}
System.out.println(sb);
sc.close();
}
}
'알고리즘 > SWEA' 카테고리의 다른 글
[Java] SWEA 3499번 퍼펙트 셔플 (0) | 2021.09.16 |
---|---|
[Java] SWEA 1263번 사람 네트워크2 (0) | 2021.05.24 |
[Java] SWEA 4014번 활주로 건설 (0) | 2021.05.23 |
[Java] SWEA 2115번 벌꿀채취 (0) | 2021.05.23 |
[Java] SWEA 5644번 무선충전 (0) | 2021.05.08 |