https://www.acmicpc.net/problem/2623
2623번: 음악프로그램
첫째 줄에는 가수의 수 N과 보조 PD의 수 M이 주어진다. 가수는 번호 1, 2,…,N 으로 표시한다. 둘째 줄부터 각 보조 PD가 정한 순서들이 한 줄에 하나씩 나온다. 각 줄의 맨 앞에는 보조 PD가 담당한
www.acmicpc.net
import java.util.*;
import java.io.*;
public class g2_2623 {
static FastScanner fs = new FastScanner();
static PrintWriter pw = new PrintWriter(System.out);
static int n, m;
static List<Node> list = new ArrayList<>();
static Queue<Integer> q = new LinkedList<>(), ans = new LinkedList<>();
public static void main(String[] args) {
n = fs.nextInt();
m = fs.nextInt();
for (int i=0;i<=n;i++) list.add(new Node());
for (int i=0;i<m;i++){
int s = fs.nextInt();
int[] temp = fs.readArray(s);
for (int j=0;j<s-1;j++){
list.get(temp[j]).next.add(temp[j + 1]);
list.get(temp[j + 1]).degree++;
}
}
for (int i=1;i<=n;i++){
if (list.get(i).degree == 0) q.add(i);
}
solve();
if (ans.size() == n) for (Integer i : ans) pw.println(i);
else pw.println(0);
pw.close();
}
static void solve(){
while (!q.isEmpty()){
int now = q.poll();
ans.add(now);
for (Integer i : list.get(now).next){
if (--list.get(i).degree == 0) q.add(i);
}
}
}
static class Node {
int degree;
List<Integer> next = new LinkedList<>();
public Node(){}
}
// ----------input function----------
static void sort(int[] a) {
ArrayList<Integer> L = new ArrayList<>();
for (int i : a)
L.add(i);
Collections.sort(L);
for (int i = 0; i < a.length; i++)
a[i] = L.get(i);
}
static class FastScanner {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer("");
String next() {
while (!st.hasMoreTokens()) {
try {
st = new StringTokenizer(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt() {
return Integer.parseInt(next());
}
int[] readArray(int n) {
int[] a = new int[n];
for (int i = 0; i < n; i++)
a[i] = nextInt();
return a;
}
long nextLong() {
return Long.parseLong(next());
}
}
}
'PS > Problems' 카테고리의 다른 글
[Java] 백준 17387번 선분 교차 2 - CCW (0) | 2022.02.19 |
---|---|
[Java] 백준 12094번 2048 (Hard) - 빡구현 (0) | 2022.02.18 |
[Java] 백준 1062번 가르침 - 비트마스킹 (0) | 2022.02.12 |
[Java] 백준 9466번 텀 프로젝트 - DP, case work (0) | 2022.02.11 |
[Java] 백준 7579번 앱 - 배낭 문제 응용 (0) | 2022.02.09 |