코테/백준
99클럽 코테 스터디 5일차 TIL BFS(알고리즘 수업 - 너비 우선 탐색 1)
zsunny
2024. 11. 1. 14:13
https://www.acmicpc.net/problem/24444

어제와 동일한데 DFS가 아닌 BFS로 푸는 문제였다. 같은 깊이의 정점을 우선 탐색하는!
오늘은 어제와 같은 실수를 하지 않았다! 방문하는 순서대로 순서 잘 저장함.
어제랑 너무 비슷해서 더 할말이 없다,,
https://dev-zsunny.tistory.com/25
99클럽 코테 스터디 4일차 TIL DFS(알고리즘 수업 - 깊이 우선 탐색1)
https://www.acmicpc.net/problem/24479 자칭 DFS, BFS 기계로서,, 문제 읽고 10분만에 구현 끝냈는데,, 제출하니 1초만에 틀렸다고 나왔다,,아무리 이것저것 테케 넣어봐도 맞는데,, 하다가 발견했다 내가 문
dev-zsunny.tistory.com
제출 코드는 아래와 같음
package STUDY;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Array;
import java.util.*;
public class Day05_BOJ_24444 {
static int n, m, r;
static int cnt;
static int[] visited;
static List<Integer>[] list;
public static void bfs(int x){
Queue<Integer> q = new LinkedList<>();
q.add(x);
visited[x] = ++cnt;
while(!q.isEmpty()){
int p = q.poll();
for(int i=0; i<list[p].size(); i++){
int now = list[p].get(i);
if(visited[now] != 0) continue;
q.add(now);
visited[now] = ++cnt;
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
r = Integer.parseInt(st.nextToken());
list = new ArrayList[n+1];
for(int i=0; i<n+1; i++){
list[i] = new ArrayList<>();
}
for(int i=0; i<m; i++){
st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
list[x].add(y);
list[y].add(x);
}
for(int i=0; i<n+1; i++){
Collections.sort(list[i]);
}
visited = new int[n+1];
bfs(r);
StringBuilder sb = new StringBuilder();
for(int i=1; i<n+1; i++){
sb.append(visited[i] + "\n");
}
System.out.println(sb.toString());
}
}
