Topological sort 3

[BOJ 3665] 최종 순위 (Java)

문제 https://www.acmicpc.net/problem/3665 3665번: 최종 순위 올해 ACM-ICPC 대전 인터넷 예선에는 총 n개의 팀이 참가했다. 팀은 1번부터 n번까지 번호가 매겨져 있다. 놀랍게도 올해 참가하는 팀은 작년에 참가했던 팀과 동일하다. 올해는 인터넷 예선 본부에 www.acmicpc.net 풀이 위상 정렬 알고리즘으로 풀 수 있다. 예시 1. 작년 순위 정보를 저장한다. 작년 순위 5 -> 4 -> 3 -> 2 -> 1 인접 노드에 대한 정보를 담을 자료 구조를 생성한다. 나는 ArrayList[] adjs = new ArrayList[] 을 이용하였다. 이 때, 중요한 것은 해당 팀보다 순위가 낮은 모든 팀의 정보를 넣어야 한다. adjs[5] 에는 4, 3, 2, 1..

[BOJ 1766] 문제집 (Java)

#문제 https://www.acmicpc.net/problem/1766 1766번: 문제집 첫째 줄에 문제의 수 N(1 ≤ N ≤ 32,000)과 먼저 푸는 것이 좋은 문제에 대한 정보의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 둘째 줄부터 M개의 줄에 걸쳐 두 정수의 순서쌍 A,B가 빈칸을 사이에 두고 주 www.acmicpc.net #풀이 위상정렬 알고리즘으로 풀 수 있다. 문제노드 간의 관계는 DAG(Directed Acyclic Graph) 로 표현될 수 있다. (방향성은 있으나 Cycle이 없는 것을 의미) 이 경우 indegree가 0인 Node부터 제거해가면서 순서를 정할 수 있다. 0인 Node가 제거되면 해당 Node가 가리키고 있었던 인접 Node의 indegree를 감소시..

[BOJ 2056] 작업 (Java)

#문제 https://www.acmicpc.net/problem/2056 2056번: 작업 수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해 www.acmicpc.net #풀이 위상정렬 알고리즘을 이용해서 푼다. #소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class BOJ2056 { public static int N; public static ArrayList[] adjs; public static int[] ind..