https://www.acmicpc.net/problem/2252
배열에 컬렉션프레임웍을 선언해 놓은 뒤 후위 노드들을 add해 주었다.
위상정렬 개념을 익히기에 좋은 문제다.
import java.util.LinkedList;import java.util.Scanner;public class Problem2252_TopologicalSort2 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();LinkedList<Integer> graph[] = new LinkedList[n+1];int indegree[] = new int[n+1];for(int i=1; i<n+1; i++){graph[i] = new LinkedList<>();}int from, to;for(int i=0; i<m; i++){from = sc.nextInt();to = sc.nextInt();graph[from].add(to);indegree[to]++;}LinkedList<Integer> q = new LinkedList<>();for(int i=1; i<n+1; i++){if(indegree[i]==0){q.offer(i);System.out.print(i+" ");}}while(!q.isEmpty()){int zeroNode = q.poll();for (int node : graph[zeroNode]) {indegree[node]--;if(indegree[node]==0){q.add(node);System.out.print(node+" ");}}}}}
'CS > Algorithm' 카테고리의 다른 글
[Algorithm] TSP 세일즈맨 알고리즘 (0) | 2017.06.28 |
---|---|
[Java] 백준9663 N-Queen (0) | 2017.05.21 |
[Java] 백준 1005 위상정렬 (0) | 2017.05.21 |
[Java] 백준 1260 DFS BFS (0) | 2017.04.07 |
[Java] 백준 2178 미로찾기 (4) | 2017.04.07 |