๐ท๐ผ๋ชจ์ฌ๋ด์ ๊ฐ๋ฐ์์ฒ๐ท๐ผ
๊ทธ๋ํ ์ต๋จ๊ฑฐ๋ฆฌ(BFS) ๋ณธ๋ฌธ
๋ฐ์ํ
๋ค์ ๊ทธ๋ํ์์ 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]);
}
}
}
'๊ฐ๋ฐ > ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA/์ฝ๋ฉํ ์คํธ] ์์ฃผํ์ง ๋ชปํ ์ ์ (0) | 2021.10.30 |
---|---|
[JAVA/์ฝ๋ฉํ ์คํธ] ๊ฐ์ฅ ์งง์ ๋ฌธ์๊ฑฐ๋ฆฌ (0) | 2021.10.04 |
๊ฒฝ๋กํ์(์ธ์ ๋ฆฌ์คํธ, ArrayList) (0) | 2021.08.02 |
๊ฒฝ๋ก ํ์(์ธ์ ํ๋ ฌ) (0) | 2021.08.02 |
๊ทธ๋ํ์ ์ธ์ ํ๋ ฌ (0) | 2021.08.01 |
Comments