You will be fine

<Algorithm> 4. BFS

by BFine
반응형

BFS


  • 넓이 우선 탐색 --> DFS가 세로라고 생각하면 BFS는 가로탐색이다.  같은 넓이에 있는 정점들을 큐에 저장하고 한번에 출력한다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class Bfs{
    ArrayList<Edge>[] graph; 
    boolean[] visited; 
    
    public Bfs(ArrayList<Edge>[] graph) {
        // TODO Auto-generated constructor stub
    
         this.graph=graph;
         visited=new boolean[graph.length]; // 방문했는지 안했는지 확인
         
         for(int i=0;i<graph.length;i++){
             if(!visited[i]){
             bfs(i); // bfs 반복 호출
             }
         }
         
    
    }
    public void bfs(int vertex){
        visited[vertex]=true// 방문함 
        
        Queue<Integer> queue=new LinkedList<Integer>(); //방문정점을 저장할 큐 생성
        queue.add(vertex);// 시작 정점 저장
        
        while(!queue.isEmpty()){
            System.out.print(queue.remove()+" -> ");
            // 큐에 들어있는 정점들 들어간 순서대로 출력
            
            for(Edge e:graph[vertex]){// 방문정점에 인접정점 반복
                if(!visited[e.adj_vertex]){
                    queue.add(e.adj_vertex); // 인접정점 방문안했다면 큐에 저장
                    visited[e.adj_vertex]=true// 방문함
                }
            }
            
        }    
    }
    
}
 
class Edge{
    int adj_vertex;
    public Edge(int adj_vertex) {
        // TODO Auto-generated constructor stub
     this.adj_vertex=adj_vertex;
    }
    
}
cs


반응형

'공부(2018~2019) - 스킨변경전 > Algorithm' 카테고리의 다른 글

<Algorithm> 6. 2023번 신기한 소수  (0) 2018.04.11
<Algorithm> 5. 에라토스테네스의 체  (0) 2018.04.11
<algorithm> 3. DFS  (0) 2018.03.30
<algorithm> 2. 10026번 RGB  (0) 2018.03.30
<algorithm> 1. Queue  (0) 2018.02.22

블로그의 정보

57개월 BackEnd

BFine

활동하기