๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/24446)
< ์๊ณ ๋ฆฌ์ฆ ์์ - ๋๋น ์ฐ์ ํ์ 3 >
๋ฌธ์ ํ์ด
bfs๋ก ํ์ํ๋ฉด์ ๋ ธ๋์ ๊น์ด๋ฅผ ์ ์ฅํด ์ค๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class _24446_ { // ์๊ณ ๋ฆฌ์ฆ ์์
- ๋๋น ์ฐ์ ํ์ 3
static ArrayList<ArrayList<Integer>> arr;
static int d[];
public static void main(String[] args) throws IOException {
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st=new StringTokenizer(bf.readLine());
int n=Integer.parseInt(st.nextToken());
int m=Integer.parseInt(st.nextToken());
int r=Integer.parseInt(st.nextToken())-1;
arr=new ArrayList<>();
d=new int[n];
for(int i=0; i<n; i++) {
arr.add(new ArrayList<>());
d[i]=-1;
}
for(int i=0; i<m; i++) {
st=new StringTokenizer(bf.readLine());
int a=Integer.parseInt(st.nextToken())-1;
int b=Integer.parseInt(st.nextToken())-1;
arr.get(a).add(b);
arr.get(b).add(a);
}
d[r]=0;
bfs(r);
for(int i=0; i<n; i++) {
bw.write(d[i]+"\n");
}
bw.flush();
}
private static void bfs(int r) {
Queue<Integer>queue=new LinkedList<>();
queue.add(r);
while(!queue.isEmpty()) {
int num=queue.poll();
for(int i=0; i<arr.get(num).size(); i++) {
int temp=arr.get(num).get(i);
if(d[temp]==-1){
d[temp]=d[num]+1;
queue.add(temp);
}
}
}
}
}
Main
- ์ ์ ์ ์ (n), ๊ฐ์ ์ ์ (m), ์์ ์ ์ (r) ์ ๋ ฅ
- arr : ์ธ์ ๋ฆฌ์คํธ
d : ๋ ธ๋์ ๊น์ด (๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ธฐ ์ํด -1๋ก ์ด๊ธฐํ)
- ์๋ฐฉํฅ์ผ๋ก ๊ทธ๋ํ ์ ์ฅ
- ์์ ์ ์ ์ ๋ ธ๋์ ๊น์ด๋ 0์ผ๋ก ์ด๊ธฐํ ํ bfs ํจ์ ํธ์ถ
- d ๋ฐฐ์ด ์ถ๋ ฅ
bfs(์์ ์ ์ r)
- queue์ ์์ ์ ์ ์ถ๊ฐ
- queue๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณต -> ์ธ์ ์ ์ ์ ์๋งํผ ๋ฐ๋ณต -> ๋ ธ๋์ ๊น์ด๊ฐ -1์ด๋ฉด ์์ง ๋ฐฉ๋ฌธํ์ง ์์๋ค๋ ๋ป์ด๋ฏ๋ก ๋ ธ๋์ ๊น์ด ์ ์ฅ ํ queue์ ์ถ๊ฐ
* ๋ ธ๋์ ๊น์ด๋ ์ ๋ ธ๋์ ๊น์ด +1์ด๋ค.
๋ง๋ฌด๋ฆฌ๐ค
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 24482_์๊ณ ๋ฆฌ์ฆ ์์ - ๊น์ด ์ฐ์ ํ์ 4 (0) | 2023.06.05 |
---|---|
[Baekjoon] 24481_์๊ณ ๋ฆฌ์ฆ ์์ - ๊น์ด ์ฐ์ ํ์ 3 (0) | 2023.06.04 |
[Baekjoon] 24447_์๊ณ ๋ฆฌ์ฆ ์์ - ๋๋น ์ฐ์ ํ์ 4 (0) | 2023.06.02 |
[Baekjoon] 9944_NxM ๋ณด๋ ์์ฃผํ๊ธฐ (0) | 2023.06.01 |
[Baekjoon] 23747_์๋ (0) | 2023.05.30 |