알고리즘/문제풀이

BFS(너비우선탐색) 알고리즘

lipnus 2018. 7. 20. 19:03
반응형
package com.company;

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

public class Main {

static int N, E, startPoint;
static int[][] graph;
static int pos;
static boolean[] visitied;

static Scanner sc = new Scanner(System.in);

public static void main(String[] args) {
// write your code here
N = sc.nextInt();
E = sc.nextInt();
startPoint = sc.nextInt();

graph = new int[1001][1001];
visitied = new boolean[N+1];


//인접행렬을 완성
int v1, v2;
for(int i=1; i<=E; i++){
v1 = sc.nextInt();
v2 = sc.nextInt();

graph[v1][v2] = 1;
graph[v2][v1] = 1;
}
bfs(startPoint);
}

static void bfs(int startPoint){

Queue<Integer> queue = new LinkedList<>();

//시작지점 처리
visitied[startPoint] = true;
queue.offer(startPoint);


while ( !queue.isEmpty() ){ //큐가 빌때까지 돈다

pos = queue.poll();
System.out.println(pos + " ");

//인접영역 탐색
for(int i=1; i<=E; i++){
if( graph[pos][i]==1 && visitied[i]==false ){ //연결되어 있고 밤문하지 않은 경우
queue.offer(i);
visitied[i] = true;
}
}//for

}//while

}
}


*테스트 Case


4 5 1

1 2

1 3

1 4

2 4

3 4


=>1 2 3 4

반응형

'알고리즘 > 문제풀이' 카테고리의 다른 글

[DP] 스티커  (0) 2018.08.29
[DP] 1로 만들기  (1) 2018.08.27
[BFS] 촌수계산  (0) 2018.08.20
세그먼트 트리(Segment Tree) / 인덱스 트리(Index Tree)  (0) 2018.08.14
DFS(깊이우선탐색) 알고리즘  (1) 2018.07.20