[白俊]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)により実施