示例#1
0
        public List <Arista> ejecutarDFS()
        {
            bool    flag = true;
            Vertice aux;

            aux = pila.Peek();
            while (pila.Count != 0)
            {
                for (int i = 0; i < aux.getLista().Count; i++)
                {
                    if (validos.Exists(x => x.getID() == aux.getLista()[i].getID()))
                    {
                        if (!visitados.Exists(x => x.getID() == aux.getLista()[i].getDestino().getID()))
                        {
                            pila.Push(aux);
                            visitados.Add(aux);
                            camino.Add(aux.getLista()[i]);
                            aux  = aux.getLista()[i].getDestino();
                            flag = false;
                            break;
                        }
                    }
                }

                if (flag)
                {
                    visitados.Add(aux);
                    Vertice aux2 = pila.Pop();

                    if (aux.getID() != aux2.getID())
                    {
                        camino.Add(encontrarArista(aux, aux2));
                    }

                    aux = aux2;
                }
                else
                {
                    flag = true;
                }
            }
            return(camino);
        }
        void Button2Click(object sender, EventArgs e)
        {
            Point centro;
            int   radio    = 0;
            int   contador = 1;

            for (int i = 0; i < back.Width; i++)
            {
                for (int j = 0; j < back.Height; j++)
                {
                    if (back.GetPixel(i, j) == Color.FromArgb(0, 0, 0))
                    {
                        centro = obtenerCentro(i, j);
                        radio  = obtenerRadio(centro);
                        dibujarCirculo(i, j, radio);
                        if (radio != -1)
                        {
                            Vertice verticeAux = new Vertice(contador, centro, radio);
                            grafo.agregarVertice(verticeAux);
                            contador++;
                        }
                    }
                }
            }
            generarAristas();
            dibujarEtiqueta();
            generarTreeView();
            for (int i = 0; i < grafo.getVertices().Count; i++)
            {
                comboBox1.Items.Add(grafo.getVertices()[i].getID().ToString());
            }

            /*Profundidad krs = new Profundidad(grafo.getVertices()[7], -1);
             * krs.ejecutarDFS();*/
            /*for(int i = 0; i<krs.getCC().Count;i++)
             *      MessageBox.Show("Cmp: "+krs.getCC()[i]);
             */
            pictureBox1.Refresh();
        }
 public void agregarVertice(Vertice v)
 {
     this.vL.Add(v);
 }
示例#4
0
 public void setVerticeActual(Vertice a)
 {
     vActual = a;
 }