๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 24446_์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ 3

๋ฟŒ์•ผ._. 2023. 6. 3. 20:45

Silver II

๋ฌธ์ œ(์ถœ์ฒ˜: 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์ด๋‹ค.

 


๋งˆ๋ฌด๋ฆฌ๐Ÿค”