// Java Breath First Search
// ------------------------
import java.util.*;
public class BreathFirstSearch {
int V;
ArrayList<Integer> adj[];
BreathFirstSearch(int noofvertex) {
V = noofvertex;
adj = new ArrayList[noofvertex];
for (int i = 0; i < noofvertex; i++) {
adj[i] = new ArrayList<>();
}
}
void edge(int x, int y) {
adj[x].add(y);
}
void bfs(int sourcevertex) {
boolean[] visited = new boolean[V];
ArrayList<Integer> a1 = new ArrayList<Integer>();
visited[sourcevertex] = true;
a1.add(sourcevertex);
while (!a1.isEmpty()) {
sourcevertex = a1.remove(0);
System.out.print(sourcevertex + "");
Iterator i = adj[sourcevertex].iterator();
while (i.hasNext()) {
int n = (int) i.next();
if (!visited[n]) {
visited[n] = true;
a1.add(n);
}
}
}
}
public static void main(String[] args) {
BreathFirstSearch g1 = new BreathFirstSearch(6);
g1.edge(0, 1);
g1.edge(0, 2);
g1.edge(0, 5);
g1.edge(1, 0);
g1.edge(1, 2);
g1.edge(2, 0);
g1.edge(2, 1);
g1.edge(2, 3);
g1.edge(2, 4);
g1.edge(3, 2);
g1.edge(4, 2);
g1.edge(4, 5);
g1.edge(5, 0);
g1.bfs(0);
}
}
// Java program to print BFS traversal from a given source vertex.
// BFS(int s) traverses vertices reachable from s.
import java.io.*;
import java.util.*;
// This class represents a directed graph using adjacency list
// representation
class Graph
{
private int V; // No. of vertices
private LinkedList<Integer> adj[]; //Adjacency Lists
// Constructor
Graph(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);
}
// prints BFS traversal from a given source s
void BFS(int s)
{
// Mark all the vertices as not visited(By default
// set as false)
boolean visited[] = new boolean[V];
// Create a queue for BFS
LinkedList<Integer> queue = new LinkedList<Integer>();
// Mark the current node as visited and enqueue it
visited[s]=true;
queue.add(s);
while (queue.size() != 0)
{
// Dequeue a vertex from queue and print it
s = queue.poll();
System.out.print(s+" ");
// Get all adjacent vertices of the dequeued vertex s
// If a adjacent has not been visited, then mark it
// visited and enqueue it
Iterator<Integer> i = adj[s].listIterator();
while (i.hasNext())
{
int n = i.next();
if (!visited[n])
{
visited[n] = true;
queue.add(n);
}
}
}
}
// Driver method to
public static void main(String args[])
{
Graph g = new Graph(4);
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(2, 0);
g.addEdge(2, 3);
g.addEdge(3, 3);
System.out.println("Following is Breadth First Traversal "+
"(starting from vertex 2)");
g.BFS(2);
}
}
// This code is contributed by Aakash Hasija