void ButtonCaminoCortoClick(object sender, EventArgs e)
        {
            int     menor = int.MaxValue;
            int     distanciaX;
            int     distanciaY;
            int     distanciaTotal;
            Vertice origen  = null;
            Vertice destino = null;

            foreach (Vertice inicio in grafoImagen.Vertices)
            {
                foreach (Vertice fin in grafoImagen.Vertices)
                {
                    if (inicio != fin)
                    {
                        distanciaX     = fin.Circulo.Centro.X - inicio.Circulo.Centro.X;
                        distanciaY     = fin.Circulo.Centro.Y - inicio.Circulo.Centro.Y;
                        distanciaTotal = (int)Math.Sqrt((distanciaX * distanciaX) + (distanciaY * distanciaY));
                        if (distanciaTotal < menor)
                        {
                            menor   = distanciaTotal;
                            origen  = inicio;
                            destino = fin;
                        }
                    }
                }
            }
            drawCircleCenter(destino.Circulo.Centro.X, destino.Circulo.Centro.Y, imagenAnalizar);
            drawCircleCenter(origen.Circulo.Centro.X, origen.Circulo.Centro.Y, imagenAnalizar);
            PictureBox_Circulos.Refresh();
        }
        void ButtonInsertarAgentesClick(object sender, EventArgs e)
        {
            comboBoxAgentes.Items.Clear();
            listaAgentes.Clear();
            PictureBox_Circulos.Image = animacion;
            Random  rand = new Random();
            Vertice punto;

            for (int x = 0; x < numeroDeAgentes.Value; x++)
            {
                while (true)
                {
                    punto = grafo.Vertices[rand.Next(0, grafo.Vertices.Count)];
                    if ((listaAgentes.Find(delegate(Agente buscar){ return(buscar.Origen == punto); })) == null)
                    {
                        break;
                    }
                }
                listaAgentes.Add(new Agente(punto, x));
                movimiento.FillEllipse(new SolidBrush(Color.Black), punto.Circulo.Centro.X - 10, punto.Circulo.Centro.Y - 10, 10 * 2, 10 * 2);
                PictureBox_Circulos.Refresh();
            }
            for (int i = 0; i < listaAgentes.Count; i++)
            {
                comboBoxAgentes.Items.Add(i.ToString());
            }
        }
        void Button1Click(object sender, EventArgs e)
        {
            treeViewConexiones.Nodes.Clear();
            //cargar2(nombre2);
            //analizar();
            int[] a   = new int[listaCirculos.Count];
            int[] dia = new int[listaCirculos.Count];

            int temp  = 0;
            int temp2 = 0;
            int tempo = 0;

            gra = Graphics.FromImage(imagenAnalizar);
            SolidBrush centro = new SolidBrush(Color.Transparent);


            for (int write = 0; write < listaCirculos.Count; write++)
            {
                for (int sort = 0; sort < listaCirculos.Count - 1; sort++)
                {
                    if (listaCirculos[sort].getDiametro > listaCirculos[sort + 1].getDiametro)
                    {
                        temp  = listaCirculos[sort + 1].getDiametro;
                        temp2 = listaCirculos[sort + 1].getID2;
                        listaCirculos[sort + 1].setDiametro = listaCirculos[sort].getDiametro;
                        listaCirculos[sort + 1].setID2      = listaCirculos[sort].getID2;
                        listaCirculos[sort].setDiametro     = temp;
                        listaCirculos[sort].setID2          = temp2;
                    }
                }
            }
            for (int x = 0; x < listaCirculos.Count; x++)
            {
                for (int y = 0; y < listaCirculos.Count; y++)
                {
                    if (listaCirculos[x].getID == listaCirculos[y].getID2)
                    {
                        a[x] = listaCirculos[y].getID;
                    }
                }
            }

            for (int x = 0; x < listaCirculos.Count; x++)
            {
                listaCirculos[x].setID2 = a[x];
            }
            for (int x = 0; x < grafoImagen.Vertices.Count; x++)
            {
                treeViewConexiones.Nodes.Add(grafoImagen.Vertices[x].Circulo.getID2.ToString());
                for (int y = 0; y < grafoImagen.Vertices[x].Aristas.Count; y++)
                {
                    treeViewConexiones.Nodes[x].Nodes.Add(grafoImagen.Vertices[x].Aristas[y].Destino.Circulo.getID2.ToString());
                }
            }
            listBoxCoordenadas.Refresh();
            grafoImagen.dibujar(listaCirculos);
            PictureBox_Circulos.Refresh();
        }
 void Grafo_buttonClick(object sender, EventArgs e)
 {
     grafo = new Grafo(listaCirculos, imagenAnalizar);
     PictureBox_Circulos.Refresh();
     for (int x = 0; x < grafo.Vertices.Count; x++)
     {
         treeViewConexiones.Nodes.Add(grafo.Vertices[x].Etiqueta.ToString());
         for (int y = 0; y < grafo.Vertices[x].Aristas.Count; y++)
         {
             treeViewConexiones.Nodes[x].Nodes.Add(grafo.Vertices[x].Aristas[y].Destino.Etiqueta.ToString());
         }
     }
     numeroDeAgentes.Maximum             = grafo.Vertices.Count;
     PictureBox_Circulos.BackgroundImage = imagenAnalizar;
     //listBoxAristas.Items.Add("Arista " + List<Vertice> + " se conecta con " + List<Vertice> "\n");
 }
        void grafo()
        {
            int i = 0;

            treeViewConexiones.Nodes.Clear();
            grafoImagen = new Grafo(listaCirculos, imagenAnalizar);
            PictureBox_Circulos.Refresh();
            for (int x = 0; x < grafoImagen.Vertices.Count; x++)
            {
                treeViewConexiones.Nodes.Add(grafoImagen.Vertices[x].Etiqueta.ToString());
                for (int y = 0; y < grafoImagen.Vertices[x].Aristas.Count; y++)
                {
                    treeViewConexiones.Nodes[x].Nodes.Add(grafoImagen.Vertices[x].Aristas[y].Destino.Etiqueta.ToString());
                }
            }
            i = grafoImagen.getContador;
            i++;
            grafoImagen.setContador = i;
        }
        void ButtonCaminoCortoClick(object sender, EventArgs e)
        {
            int menor = int.MaxValue;

            int     distanciaX;
            int     distanciaY;
            int     distancia;
            Vertice verticeOrigen  = null;
            Vertice verticeDestino = null;

            try{
                foreach (Vertice puntoA in grafo.Vertices)
                {
                    foreach (Vertice puntoB in grafo.Vertices)
                    {
                        if (puntoA != puntoB)
                        {
                            distanciaX = puntoB.Circulo.Centro.X - puntoA.Circulo.Centro.X;
                            distanciaY = puntoB.Circulo.Centro.Y - puntoA.Circulo.Centro.Y;
                            distancia  = (int)Math.Sqrt((distanciaX * distanciaX) + (distanciaY * distanciaY));
                            if (distancia < menor)
                            {
                                menor          = distancia;
                                verticeOrigen  = puntoA;
                                verticeDestino = puntoB;
                            }
                        }
                    }
                }

                centroide.FillEllipse(new SolidBrush(Color.Yellow), verticeOrigen.Circulo.Centro.X - verticeOrigen.Circulo.Radio, verticeOrigen.Circulo.Centro.Y - verticeOrigen.Circulo.Radio, verticeOrigen.Circulo.Radio * 2, verticeOrigen.Circulo.Radio * 2);
                centroide.FillEllipse(new SolidBrush(Color.Yellow), verticeDestino.Circulo.Centro.X - verticeDestino.Circulo.Radio, verticeDestino.Circulo.Centro.Y - verticeDestino.Circulo.Radio, verticeDestino.Circulo.Radio * 2, verticeDestino.Circulo.Radio * 2);
                PictureBox_Circulos.Refresh();
            }
            catch {
                MessageBox.Show("No se cumplen con los requerimientos minimos para los vertices");
            }
        }
        void ButtonAgenteClick(object sender, EventArgs e)
        {
            treeViewAgentes.Nodes.Clear();
            int menorDistancia = int.MaxValue;

            agentesTerminaron.Clear();
            try{
                if (listaAgentes.Count >= 0)
                {
                    List <Agente> listaAgentesVertices = new List <Agente>();
                    Agente        agenteMayor          = listaAgentes[0];
                    Point         mover;
                    while (agentesTerminaron.Count < listaAgentes.Count)
                    {
                        movimiento.Clear(Color.Transparent);
                        foreach (Agente a in listaAgentes)
                        {
                            if (!a.FinalizoCaminoArista())
                            {
                                mover = a.Mover();
                                movimiento.FillEllipse(new SolidBrush(Color.Black), mover.X - 10, mover.Y - 10, 10 * 2, 10 * 2);
                            }
                            else if (a.ExistenCaminos())
                            {
                                a.ProximoCamino();
                            }
                            else
                            {
                                if (!agentesTerminaron.Contains(a))
                                {
                                    agentesTerminaron.Add(a);
                                }
                            }
                        }
                        PictureBox_Circulos.Refresh();
                    }
                    foreach (Agente A in listaAgentes)
                    {
                        if (agenteMayor.VerticesTotales.Count < A.VerticesTotales.Count)
                        {
                            agenteMayor = A;
                            listaAgentesVertices.Clear();
                            listaAgentesVertices.Add(A);
                        }
                        else if (agenteMayor.VerticesTotales.Count == A.VerticesTotales.Count)
                        {
                            listaAgentesVertices.Add(A);
                        }
                    }
                    foreach (Agente B in listaAgentesVertices)
                    {
                        if (B.RecorridoTota < menorDistancia)
                        {
                            menorDistancia = B.RecorridoTota;
                            agenteMayor    = B;
                        }
                    }
                    labelMayorDistancia.Text = (agenteMayor.Id + " : " + agenteMayor.RecorridoTota + " , Vertices: " + agenteMayor.VerticesTotales.Count.ToString());

                    for (int x = 0; x < listaAgentes.Count; x++)
                    {
                        treeViewAgentes.Nodes.Add(listaAgentes[x].Id.ToString());
                        for (int y = 0; y < listaAgentes[x].CaminosRecorridos.Count; y = y + 2)
                        {
                            if (y == listaAgentes[x].CaminosRecorridos.Count - 2)
                            {
                                treeViewAgentes.Nodes[x].Nodes.Add(listaAgentes[x].CaminosRecorridos[y++].Origen.Etiqueta.ToString());
                            }

                            treeViewAgentes.Nodes[x].Nodes.Add(listaAgentes[x].CaminosRecorridos[y].Origen.Etiqueta.ToString());
                        }
                    }
                }
            }
            catch {
                MessageBox.Show("No hay agentes para mover");
            }
        }