Notice
Recent Posts
문제 풀이 및 개발 공간
[백준] 2623번 음악프로그램 (gold 3 본문
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st=new StringTokenizer(br.readLine());
int n=Integer.valueOf(st.nextToken());
int m=Integer.valueOf(st.nextToken());
//연결 관계 파악 위한 리스트
ArrayList<Integer>[] arr=new ArrayList[n+1];
for(int i=1; i<=n; i++){
arr[i]=new ArrayList<>();
}
//연결관계 및 차수 파악
int[] v=new int[n+1];
for(int i=0; i<m; i++){
st=new StringTokenizer(br.readLine());
int t=Integer.valueOf(st.nextToken());
int temp=Integer.valueOf(st.nextToken());
for(int j=1; j<t; j++){
int num=Integer.valueOf(st.nextToken());
v[num]++;
arr[temp].add(num);
temp=num;
}
}
Queue<Integer> que=new LinkedList<>();
//차수 0부터 넣기
for(int i=1; i<=n; i++){
if(v[i]==0){
que.offer(i);
}
}
//차수 0부터 넣으면서 해당 정점들 차수 깎으면서 0이면 추가.
//list에 순서대로 넣기
ArrayList<Integer> list=new ArrayList<>();
while(!que.isEmpty()){
int temp=que.poll();
list.add(temp);
for(int i=0; i<arr[temp].size(); i++){
int t=arr[temp].get(i);
v[t]--;
if(v[t]==0){
que.offer(t);
}
}
}
//list의 사이즈가 n이면 모든 정점 들어온거 즉 순서대로 나열가능
//사이즈가 다르면 못 들어오는 경우가 있는거 한마디로 불가.
if(list.size()==n){
for(Integer e : list){
bw.write(e+"\n");
}
}
else{
bw.write("0");
}
bw.flush();
}
}
'백준공부 > java' 카테고리의 다른 글
[백준] 1005번 ACM Craft (gold 3 (3) | 2024.03.17 |
---|---|
[백준] 9466번 텀 프로젝트 (gold 3 (0) | 2024.03.17 |
[백준] 27961번 고양이는 많을수록 좋다 (bronze 1 (0) | 2024.03.15 |
[백준] 25706번 자전거 묘기 (silver 4 (0) | 2024.03.15 |
[백준] 10610번 30 (silver 4 (0) | 2024.03.15 |