반응형
문제 설명
자바 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
public class Main {
static int[][] check = new int[1001][1001];
static boolean[] visited = new boolean[1001];
static int vCount;
static int start;
public static void main(String[] args) throws Exception{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String input[]=br.readLine().split(" ");
vCount=Integer.parseInt(input[0]);
int repeat=Integer.parseInt(input[1]);
start=Integer.parseInt(input[2]);
for(int i=0;i<repeat;i++){
String []node=br.readLine().split(" ");
int v=Integer.parseInt(node[0]);
int w=Integer.parseInt(node[1]);
check[v][w]=1;
check[w][v]=1;
} //여기까지 초기화
dfs(start);
visited = new boolean[1001]; //방문상태 초기화
System.out.println(); //줄바꿈
bfs(start); //bfs호출
}
public static void dfs(int n){
visited[n]=true;
System.out.print(n+" ");
for(int i=1;i<=vCount;i++){
if(check[n][i]==1&&(!visited[i])){
dfs(i);
}
}
}
static void bfs(int s){
visited[s]=true;
LinkedList<Integer> queue=new LinkedList<>();
queue.offer(s);
System.out.print(s + " ");
while (queue.size()!=0){
s=queue.poll();
for(int i=1;i<=vCount;i++){
if(check[s][i]==1&&(!visited[i])){
queue.offer(i);
visited[i]=true;
System.out.print(i+" ");
}
}
}
}
}
문제 설명
dfs 는 재귀함수를 이용하여 풀었고 bfs는 큐를 이용하여 풀었습니다.
반응형
'프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
백준 1697 숨바꼭질 자바 (0) | 2021.07.01 |
---|---|
백준 2667 단지번호붙이기 자바 (0) | 2021.06.27 |
백준 10872 피보나치 수 5 자바 (0) | 2021.06.27 |
백준 15711 환상의 짝꿍 자바 (0) | 2021.06.20 |
백준 6588번 골드바흐의 추측 자바 (0) | 2021.06.20 |
댓글