ex)

Code
import java.io.*;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
static LinkedList<Integer>[] adj;
static boolean[] visit;
static Queue<Integer> queue;
public static void main(String[] args) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
//정점과 간선 선언 및 저장
String str = bf.readLine();
int n = Integer.parseInt(str.split(" ")[0]);
int m = Integer.parseInt(str.split(" ")[1]);
queue = new LinkedList<>();
//t,f판별 배열과 인접 리스트 선언 및 초기화
visit = new boolean[n+1];
adj = new LinkedList[n+1];
for (int i = 0; i<adj.length; i++){
adj[i] = new LinkedList<>();
}
//인접 리스트 값 입력 및 노드에 값 저장
for (int i = 0; i < m; i++){
String str2 = bf.readLine();
int u = Integer.parseInt(str2.split(" ")[0]);
int v = Integer.parseInt(str2.split(" ")[1]);
adj[u].add(v);
adj[v].add(u);
}
//t, f판별 후 bfs실행
for (int i = 1; i<n+1; i++){
if (!visit[i]) {
visit[i] = true;
System.out.print(i + " ");
bfs(i);
}
}
}
//bfs함수
private static void bfs(int i) {
for (int a:adj[i]) {
if (!visit[a]) {
visit[a] = true;
queue.add(a);
System.out.print(a + " ");
}
}
if (!(queue.isEmpty())) bfs(queue.poll());
else return;
}
}
결과


'Java' 카테고리의 다른 글
[백준] 1920번 수 찾기 - 이진 탐색 알고리즘/ 함수 이용(재귀X) (0) | 2023.09.06 |
---|---|
[백준] 2178번 미로 탐색 - BFS / 너비 탐색 알고리즘 / 클래스 (0) | 2023.09.05 |
[백준] 11724번 연결 요소의 개수 - DFS방식 / 재귀 함수 이용/ 무방향 그래프 (0) | 2023.09.01 |
[Java] DFS 구현하기 - 재귀 함수 이용 / 인접 리스트 / 배열 (0) | 2023.08.31 |
[백준] 1517번 버블 소트 - 병합 정렬 / 버블 정렬 (0) | 2023.08.31 |