[白俊]1260DFSとBFS/Java
📃DFSとBFSリンク
👩🏻💻に答える
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class DFSBFS_1260 {
static int[][] matrix;
static boolean[] visited;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int node = scan.nextInt();
int edge = scan.nextInt();
int start = scan.nextInt();
matrix = new int[node+1][node+1];
for(int i = 0; i < edge; i++) {
int x = scan.nextInt();
int y = scan.nextInt();
matrix[x][y] = matrix[y][x] = 1;
}
visited = new boolean[node+1];
dfs(start);
System.out.println();
visited = new boolean[node+1];
bfs(start);
}
public static void dfs(int start) {
visited[start] = true;
int count = 1;
System.out.print(start+ " ");
if(count == matrix.length - 1)
return;
for(int i = 1; i < matrix.length; i++) {
if(matrix[start][i] == 1 && visited[i] == false){
count++;
dfs(i);
}
}
}
public static void bfs(int start) {
Queue<Integer> que = new LinkedList<Integer>();
que.add(start);
visited[start] = true;
System.out.print(start+ " ");
while(!que.isEmpty()) {
int check = que.peek();
que.poll();
for(int i = 1; i < matrix.length; i++) {
if(matrix[check][i] == 1 && visited[i] == false) {
que.add(i);
visited[i] = true;
System.out.print(i+ " ");
}
}
}
}
}
問題はDFSとBFSを使ってグラフィックをブラウズすることです!入力例1
4 5 1
1 2
1 3
1 4
2 4
3 4
例1として、DFSは1〜2〜4〜3の順に、BFSは1〜2〜3〜4の順にナビゲートされる.
次の手順でコドラーを編成しました
1.隣接行列の作成
2.DFSメソッド-再帰的に実装
3.BFS方式-第1の第1の出力(Queue)により実施
Reference
この問題について([白俊]1260DFSとBFS/Java), 我々は、より多くの情報をここで見つけました https://velog.io/@sennys2/백준1260.DFS와-BFSJavaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol