๐ŸŒท๐ŸŒผ๋ชจ์—ฌ๋ด์š” ๊ฐœ๋ฐœ์˜์ˆฒ๐ŸŒท๐ŸŒผ

๊ทธ๋ž˜ํ”„ ์ตœ๋‹จ๊ฑฐ๋ฆฌ(BFS) ๋ณธ๋ฌธ

๊ฐœ๋ฐœ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด JAVA

๊ทธ๋ž˜ํ”„ ์ตœ๋‹จ๊ฑฐ๋ฆฌ(BFS)

์š”์ผ์ด 2021. 8. 2. 23:11
๋ฐ˜์‘ํ˜•

๋‹ค์Œ ๊ทธ๋ž˜ํ”„์—์„œ 1๋ฒˆ ์ •์ ์—์„œ ๊ฐ ์ •์ ์œผ๋กœ ๊ฐ€๋Š” ์ตœ์†Œ ์ด๋™ ๊ฐ„์„ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์„ธ์š”.

์ž…๋ ฅ์„ค๋ช…

์ฒซ์งธ ์ค„์—๋Š” ์ •์ ์˜ ์ˆ˜ N(1<=N<=20)์™€ ๊ฐ„์„ ์˜ ์ˆ˜ M๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ ๋‹ค์Œ๋ถ€ํ„ฐ M์ค„์— ๊ฑธ์ณ ์—ฐ ๊ฒฐ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ์„ค๋ช…

1๋ฒˆ ์ •์ ์—์„œ ๊ฐ ์ •์ ์œผ๋กœ ๊ฐ€๋Š” ์ตœ์†Œ ๊ฐ„์„ ์ˆ˜๋ฅผ 2๋ฒˆ ์ •์ ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ถœ๋ ฅํ•˜์„ธ์š”.

 

์ž…๋ ฅ์˜ˆ์ œ

6 9

1 3

1 4

2 1

2 5

3 4

4 5

4 6

6 2

6 5

 

์ถœ๋ ฅ์˜ˆ์ œ

2 : 3

3 : 1

4 : 1

5 : 2

6 : 2

 

์ด ๋ฌธ์ œ๋Š” ํ’€์ด๋ฐฉ์‹์ด 2๊ฐœ์ด๋‚˜ ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋กœ ํ•˜๋Š”๊ฒŒ ๋‚˜์ค‘์— ์ •์ ์ด ๋งŽ์•„์ง€๊ฑฐ๋‚˜ 2์ฐจ์› ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ๋•Œ ์œ ๋ฆฌํ•ด ์ง„๋‹ค.

 

์ฒซ๋ฒˆ์งธ ๋ฐฉ์‹(Node์‚ฌ์šฉ)

๋‘๋ฒˆ์งธ ๋ฐฉ์‹(์ธ์ ‘๋ฆฌ์ŠคํŠธ ์‚ฌ์šฉ)

import java.util.*;

class Main{
	static int n, m;
	static ArrayList<ArrayList<Integer>> graph;
	static int[] ch, dis;
	public void BFS(int v) {
		Queue<Integer> queue = new LinkedList<>();
		ch[v] = 1;
		dis[v] = 0;
		queue.offer(v);
		while(!queue.isEmpty()) {
			int cv=queue.poll();
			for(int nv : graph.get(cv)) {
				if(ch[nv]==0) {
					ch[nv] = 1;
					queue.offer(nv);
					dis[nv] = dis[cv] + 1;
				}	
			}
		}
	}
	
	public static void main(String[] args) {
		Main T = new Main();
		Scanner in = new Scanner(System.in);
		// ์ •์ ์˜ ๊ฐฏ์ˆ˜
		n=in.nextInt();
		// ๊ฐ„์„ ์˜ ๊ฐฏ์ˆ˜
		m=in.nextInt();
		// ์ธ์ ‘๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”
		graph = new ArrayList<ArrayList<Integer>>();
		for(int i=0; i<=n; i++) {
			graph.add(new ArrayList<Integer>());
		}
		ch = new int[n+1];
		dis = new int[n+1];
		// ๊ฐ’ ๋„ฃ๊ธฐ
		for(int i=0; i<m; i++) {
			int a = in.nextInt();
			int b = in.nextInt();
			graph.get(a).add(b);
		}
		T.BFS(1);
		for(int i=2; i<=n; i++) {
			System.out.println(i+" : "+dis[i]);
		}
	}
}
Comments