/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package grafos.BFS;
import grafos.Grafo;
import grafos.VerticeBL;
import java.util.*;

/**
 *
 * @author a1380311
 */
public class BFS {
    //
    public void initBfs(Grafo g)
    {
        
    }
    public void bfs(Grafo g, VerticeBL s)
    {
        /*Inicializando um map com o grafo e em seguida pegando a lista de adjacência
         do vértice inical da busca (s)*/
        Map<VerticeBL, ArrayList<VerticeBL>> grafo = g.getGrafo();
        ArrayList<VerticeBL> vertices = grafo.get(s);
       
        vertices.get(0).setCor("Cinza");     
        
        
        Queue<VerticeBL> queue = new LinkedList<VerticeBL>();

        if(vertices.get(0) == null) return;
        
        queue.add(s);

/*        Enquanto a fila não for vazia procurar pelos vértices adjascentes ao inicial
          que forem da cor branca, colocar a cor como cinza e adicionar na fila para
            buscar os vertices adjascentes a eles*/
        while(!queue.isEmpty())
        {
           
            VerticeBL r = queue.remove(); 
            ArrayList<VerticeBL> v = grafo.get(r);
            
            for(VerticeBL n: v)
            {
                if(n.getCor().equals("Branco"))
                {
                    queue.add(n);
                    n.setCor("Cinza");
                }
            }
        }


    }
    
}


@@ -342,151 +342,82 @@
 oid 
-initBfs(Grafo g)%0A    %7B%0A        %0A    %7D%0A    public void bfs(Grafo g, VerticeBL s)%0A    %7B%0A        /*Inicializando um map com o grafo e em seguida p
+bfs(Map%3CVerticeBL, ArrayList%3CVerticeBL%3E%3E g, VerticeBL s)%0A    %7B%0A        /*P
 egan
@@ -440,25 +440,16 @@
 jac%C3%AAncia
-%0A        
  do v%C3%A9rt
@@ -451,16 +451,19 @@
  v%C3%A9rtice
+(s)
  inical 
@@ -474,12 +474,8 @@
 usca
- (s)
 */%0A 
@@ -484,23 +484,8 @@
     
- Map%3CVerticeBL,
  Arr
@@ -505,23 +505,25 @@
 eBL%3E
-%3E grafo
+ vertices
  = g.get
 Graf
@@ -522,14 +522,10 @@
 .get
-Grafo
 (
+s
 );%0A 
@@ -534,126 +534,266 @@
     
- ArrayList%3CVerticeBL%3E vertices = grafo.get(s);%0A       %0A        vertices.get(0).setCor(%22Cinza%22
+%0A        //Setando a cor cinza, pois o v%C3%A9rtice acabou de ser visitado e o d como 0%0A        s.setCor(%22cinza%22);%0A        s.setD(0);%0A//        System.out.println(vertices.get(0)
 );
+%0A
      
-%0A        %0A        
+   %0A//      Criando uma fila para a busca em largura dos v%C3%A9rtices adjacentes.
 %0A   
@@ -863,31 +863,17 @@
      if(
-vertices.get(0)
+s
  == null
@@ -1273,20 +1273,16 @@
 L%3E v = g
-rafo
 .get(r);
@@ -1282,16 +1282,91 @@
 get(r);%0A
+//            System.out.println(r);%0A//            System.out.println(v);%0A%0A
         
@@ -1361,33 +1361,48 @@
 );%0A%0A            
-%0A
+if(v != null)%7B%0A 
             for(
@@ -1397,16 +1397,19 @@
         
+   
 for(Vert
@@ -1424,32 +1424,36 @@
  v)%0A            
+    
 %7B%0A              
@@ -1454,16 +1454,20 @@
         
+    
 if(n.get
@@ -1480,17 +1480,17 @@
 equals(%22
-B
+b
 ranco%22))
@@ -1498,34 +1498,42 @@
                 
+    
 %7B%0A
+    
                 
@@ -1570,16 +1570,20 @@
         
+    
 n.setCor
@@ -1588,17 +1588,17 @@
 or(%22
-C
+c
 inza%22);%0A
     
@@ -1585,32 +1585,82 @@
 etCor(%22cinza%22);%0A
+                        n.setD(r.getD() + 1);%0A    
                 
@@ -1665,34 +1665,42 @@
   %7D%0A            
-%7D%0A
+    %7D%0A    
         %7D%0A%0A%0A    
@@ -1693,18 +1693,88 @@
       %7D%0A
-%0A%0A
+            r.setCor(%22preto%22);%0A//            System.out.println(r);%0A    
     %7D%0A  
@@ -1775,12 +1775,13 @@
   %7D%0A    
+%7D
 %0A%7D%0A%0A

Add files via upload