From bcfcc29aa88f4f996ce4a82f40ad0e24a7ac26fc Mon Sep 17 00:00:00 2001 From: pojith raj R <126692672+pojith@users.noreply.github.com> Date: Mon, 25 Mar 2024 21:41:57 +0530 Subject: [PATCH] Create Breadth-First Search (BFS) Searching.java Signed-off-by: pojith raj R <126692672+pojith@users.noreply.github.com> --- ...Breadth-First Search (BFS) Searching .java | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 Java/Algorithm/SearchingAlgorithm/Breadth-First Search (BFS) Searching .java diff --git a/Java/Algorithm/SearchingAlgorithm/Breadth-First Search (BFS) Searching .java b/Java/Algorithm/SearchingAlgorithm/Breadth-First Search (BFS) Searching .java new file mode 100644 index 00000000..cd9dfccc --- /dev/null +++ b/Java/Algorithm/SearchingAlgorithm/Breadth-First Search (BFS) Searching .java @@ -0,0 +1,71 @@ +import java.util.*; + +public class BFS { + private int V; // Number of vertices + private LinkedList adj[]; // Adjacency list representation of the graph + + public BFS(int v) { + V = v; + adj = new LinkedList[v]; + for (int i = 0; i < v; ++i) + adj[i] = new LinkedList(); + } + + // Function to add an edge into the graph + void addEdge(int v, int w) { + adj[v].add(w); + } + + // BFS traversal starting from a given source vertex + void BFS(int s) { + // Mark all the vertices as not visited + boolean visited[] = new boolean[V]; + + // Create a queue for BFS + LinkedList queue = new LinkedList<>(); + + // Mark the current node as visited and enqueue it + visited[s] = true; + queue.add(s); + + while (queue.size() != 0) { + // Dequeue a vertex from the queue and print it + s = queue.poll(); + System.out.print(s + " "); + + // Get all adjacent vertices of the dequeued vertex s. If an adjacent vertex has not been visited, + // then mark it visited and enqueue it + Iterator i = adj[s].listIterator(); + while (i.hasNext()) { + int n = i.next(); + if (!visited[n]) { + visited[n] = true; + queue.add(n); + } + } + } + } + + public static void main(String args[]) { + Scanner scanner = new Scanner(System.in); + + System.out.print("Enter the number of vertices: "); + int V = scanner.nextInt(); + + BFS graph = new BFS(V); + + System.out.println("Enter the edges (vertex pairs, -1 to stop): "); + while (true) { + int v1 = scanner.nextInt(); + if (v1 == -1) break; + int v2 = scanner.nextInt(); + graph.addEdge(v1, v2); + } + + System.out.print("Enter the starting vertex for BFS: "); + int startVertex = scanner.nextInt(); + + System.out.println("Breadth First Traversal starting from vertex " + startVertex + ":"); + graph.BFS(startVertex); + } +}