백준공부/java
[백준] 24444번 알고리즘 수업 - 너비 우선 탐색 1 (silver 2
gomduri43
2023. 9. 25. 15:59
import java.io.*;
import java.util.*;
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));
HashMap<Integer , ArrayList<Integer>> dict=new HashMap<>();
StringTokenizer st=new StringTokenizer(br.readLine());
int n=Integer.valueOf(st.nextToken());
int m=Integer.valueOf(st.nextToken());
int s=Integer.valueOf(st.nextToken());
int[] visit=new int[n+1];
for(int i=0; i<m; i++){
st=new StringTokenizer(br.readLine());
int t1=Integer.valueOf(st.nextToken());
int t2=Integer.valueOf(st.nextToken());
if(dict.get(t1)==null){
dict.put(t1, new ArrayList<>());
dict.get(t1).add(t2);
}
else{
dict.get(t1).add(t2);
}
if(dict.get(t2)==null){
dict.put(t2,new ArrayList<>());
dict.get(t2).add(t1);
}
else{
dict.get(t2).add(t1);
}
}
Queue<Integer> que=new LinkedList<>();
int nth=1;
visit[s]=nth;
nth++;
que.offer(s);
while(!que.isEmpty()){
int temp=que.poll();
ArrayList<Integer> arr=dict.get(temp);
Collections.sort(arr);
for(int i=0; i<arr.size(); i++){
if(visit[arr.get(i)]==0){
visit[arr.get(i)]=nth;
nth++;
que.offer(arr.get(i));
}
}
}
for(int i=1; i<=n; i++){
bw.write(visit[i]+"\n");
}
bw.flush();
}
}