강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

동준 김님의 프로필 이미지
동준 김

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

14. 그래프 최단거리(BFS)

숙제검사

작성

·

277

0

안녕하세요 선생님.

숙제 코드 잘 작성됐는지 검토 부탁드립니다!

 

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

// 그래프 최단거리(BFS) level
public class Example12 {
	static int n, m;
	static int[] answer;
	static ArrayList<ArrayList<Integer>> graph;
	static boolean[] visited;
	
	static public void bfs(int node) {
		Queue<Integer> queue = new LinkedList<>();
		
		queue.offer(node);
		visited[node] = true;
		int level = 0;
		while(!queue.isEmpty()) {
			int length = queue.size();
			for(int i=0; i<length; i++) {
				int v = queue.poll();
				answer[v] = level;
				for(int x : graph.get(v)) {
					if(!visited[x]) {
						queue.offer(x);
						visited[x] = true;
					}
				}
			}
			level++;
		}
		
	}

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        
        
        n = scan.nextInt();
        m = scan.nextInt();
        answer = new int[n+1];
        visited = new boolean[n+1];
        graph = new ArrayList<ArrayList<Integer>>();
        for(int i=0; i<=n; i++) {
        	graph.add(new ArrayList<Integer>());
        }
        
        for(int i=0; i<m; i++) {
        	int x = scan.nextInt();
        	int y = scan.nextInt();
        	graph.get(x).add(y);
        }
        
        bfs(1);
        
        for(int i=2; i<answer.length; i++) {
        	System.out.println(i + " : " + answer[i]);
        }
    }
}

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

네. 잘 하셨습니다.

동준 김님의 프로필 이미지
동준 김

작성한 질문수

질문하기