본문으로 바로가기

[Java] 백준 2252 쉬운 위상정렬

category CS/Algorithm 2017. 5. 21. 09:57

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