그래프에서 1번 정점에서 각 정점으로 가는 최소 이동 간선수를 출력하세요
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> q = new LinkedList<>();
ch[v] = 1;
dis[v] = 0;
q.offer(v);
while(!.q.isEmpty()) {
int cv = q.poll();
for(int nv : graph.get(cv)) {
if(ch[nv] == 0) {
ch[nv] = 1;
q.offer(nv);
dis[nv] = dis[v] + 1;
}
}
}
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner();
int n = in.nextInt();
int m = in.nextInt();
for(int i=0; i<=n; i++) {
graph.add(new ArrayList<Integer>());
}
ch = int[n+1];
dis = int[n+1];
for(int i=0; i<m; i++) {
int a = nextInt();
int b = nextInt();
graph.get(a).add(b);
}
T.BFS(1);
for(int i=2; i<=n; i++) {
System.out.println(i + " : " + dis[i]);
}
}
}
출력값
2 : 3
3 : 1
4 : 1
5 : 2
6 : 2
'java' 카테고리의 다른 글
[Java] 경로탐색 (DFS, 인접리스트, ArrayList) (0) | 2025.03.20 |
---|---|
[Java] BFS, DFS 트리 가장 짧은 경로 (0) | 2025.03.14 |
[Java] BFS 이진트리 레벨탐색 / 송아지 찾기 (0) | 2025.03.10 |
[Java] DFS 이진트리순회 부분집합 구하기 (0) | 2025.02.26 |
[Java] 자바 알고리즘 문제풀이 : 피보나치 재귀(메모이제이션) (1) | 2025.02.24 |