알고리즘/SWEA
[Java] SWEA 1267번 작업순서
컴공맨
2021. 5. 30. 20:21
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
풀이
위상정렬을 사용하여 해결했습니다.
코드
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();
}
}
pyo7410/Algorithm
1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.
github.com