dsa/Graphs/BFS.java

53 lines
1.3 KiB
Java

import java.util.*;
import java.io.*;
class BFS {
public static ArrayList<Integer> bfs(int V, ArrayList<ArrayList<Integer>> adj){
boolean visited[] = new boolean[V];
ArrayList<Integer> bfs = new ArrayList<>();
Queue <Integer> q = new LinkedList<>();
q.add(0);
visited[0]=true;
while(!q.isEmpty()){
Integer node = q.poll();
bfs.add(node);
for (Integer it : adj.get(node)){
if (!visited[it]){
visited[it]=true;
q.add(it);
}
}
}
return bfs;
}
public static void main(String[] args) {
ArrayList<ArrayList<Integer>> adj = new ArrayList<>();
for (int i=0; i<5; i++){
adj.add(new ArrayList<>());
}
adj.get(0).add(1);
adj.get(1).add(0);
adj.get(0).add(4);
adj.get(4).add(0);
adj.get(1).add(2);
adj.get(2).add(1);
adj.get(1).add(3);
adj.get(3).add(1);
ArrayList <Integer> ans = bfs(5, adj);
for (int i=0; i<ans.size(); i++){
System.out.printf("%d ", ans.get(i));
}
}
}