Development Palette
무방향 그래프 인접 행렬 - BFS, DFS 본문
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class AdjMatrixTest {
static int N; // 정점 개수
static boolean[][] adjMatrix; // 인접행렬 (가중치 없음)
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(in.readLine());
adjMatrix = new boolean[N][N];
int C = Integer.parseInt(in.readLine()); // 간선 개수
for (int i = 0; i < C; i++) {
StringTokenizer st = new StringTokenizer(in.readLine());
int from = Integer.parseInt(st.nextToken());
int to = Integer.parseInt(st.nextToken());
adjMatrix[to][from] = adjMatrix[from][to] = true;
}
System.out.println("=============bfs==================");
bfs();
System.out.println("=============dfs==================");
boolean[] visited = new boolean[N];
dfs(0,visited);
}
private static void bfs() {
Queue<Integer> queue = new LinkedList<Integer>();
boolean[] visited = new boolean[N];
queue.offer(0);
visited[0] = true;
while(!queue.isEmpty()) {
int current = queue.poll();
System.out.println((char)(current+65)); //char로 변환
for (int i = 0; i < N; i++) {
if(!visited[i] // 미방문
&& adjMatrix[current][i] // 인접정점
) {
queue.offer(i);
visited[i] = true;
}
}
}
}
private static void dfs(int current,boolean[] visited) { //
visited[current] = true;
System.out.println((char)(current+65));
for (int i = 0; i < N; i++) {
if(!visited[i] && adjMatrix[current][i]) {
dfs(i, visited);
}
}
}
}
input
7
8
0 1
0 2
1 3
1 4
2 4
3 5
4 5
5 6
output
=============bfs==================
A
C
B
E
D
F
G
=============dfs==================
A
C
E
F
G
D
B
=============bfs==================
A
B
C
D
E
F
G
=============dfs==================
A
B
D
F
E
C
G
'Algorithm > 개념' 카테고리의 다른 글
[DP] 0 / 1 Knapsack (0) | 2021.09.26 |
---|---|
Union - Find 알고리즘(서로소 집합) (0) | 2021.08.24 |
무방향 그래프 인접 리스트 - BFS, DFS (0) | 2021.08.24 |
분할정복기법 응용2 (0) | 2021.08.19 |
BFS, DFS, Backtracking (0) | 2021.08.19 |
Comments