Algoritmo de búsqueda en anchura en grafos, recibe un nodo inicial s y visita todos los nodos alcanzables desde s. BFS también halla la distancia más corta entre el nodo inicial s y los demás nodos si todas las aristas tienen peso 1.
SE DEBEN LIMPIAR LAS ESTRUCTURAS DE DATOS ANTES DE UTILIZARSE

static int v, e; //vertices, arcos
static int MAX=100005; 
static ArrayList<Integer> ady[] = new ArrayList[MAX]; //lista de Adyacencia
static long distance[] = new long[MAX];

//Recibe el nodo inicial s
static void bfs(int s){
    Queue<Integer> q = new LinkedList<Integer>();
    q.add(s); 
    distance[s] = 0;
    int actual, i, next;
        
    while( !q.isEmpty() ){
        actual = q.poll();
        for( i = 0; i < ady[actual].size(); i++){
            next = ady[actual].get(i);
            if( distance[next] == -1 ){
                distance[next] = distance[actual] + 1;
                q.add(next);
            }
        }
    }
}
@@ -309,11 +309,8 @@
 nt v
-, e
 ; //
@@ -321,15 +321,8 @@
 ices
-, arcos
 %0D%0Ast
@@ -950,8 +950,270 @@
     %7D%0D%0A%7D
+%0D%0A%0D%0Apublic static void main(String%5B%5D args) %7B%0D%0A    %0D%0A    for (int j = 0; j %3C= v; j++) %7B //Inicializacion de las estructuras%0D%0A             ady%5Bj%5D = new ArrayList%3CInteger%3E(); //Lista de Adyacencia%0D%0A            distance%5Bj%5D = -1; //Distancia a cada nodo%0D%0A    %7D%0D%0A%0D%0A%7D%0D%0A

Update BFS.java