public void agregarVertice(Vertice vertice) { vertice.SetId("V" + this.numVertices.ToString()); foreach (Arista arista in vertice.GetAristas()) { arista.SetVid(vertice.GetId()); } vertices.Add(vertice); this.numVertices += 1; }
private void pictureBox1_MouseClick(object sender, MouseEventArgs e) { if (grafodetectado) { Color pixel = imageCopy.GetPixel(e.X, e.Y); if (pixel.R == pixel.G && pixel.G == pixel.B && pixel.R != 255) { List <Arista> prometodor = new List <Arista>(); List <string> visited = new List <string>(); List <Arista> aristaQueue = new List <Arista>(); //List<Tuple<String, Arista>> tuplaArista = new List<Tuple<string, Arista>>(); Vertice vertice_click = Utilities.BelongsTo(e.X, e.Y, grafo, imageCopy); Tree newPrim = new Tree("P"); if (vertice_click != null && !Utilities.isInsideTree(ARMPrim, vertice_click)) { foreach (Vertice ver in grafo.GetSubgraphs()[vertice_click.GetGroup() - 1]) { var nuevoVertice = new Vertice(ver.GetCoordenada(), ver.GetRadius(), ver.GetArea(), ver.GetId()); nuevoVertice.SetGroup(ver.GetGroup()); newPrim.addVertice(nuevoVertice); } foreach (Arista arista in vertice_click.GetAristas()) { //tuplaArista.Add(new Tuple<String, Arista>(vertice_click.GetId(),arista)); aristaQueue.Add(arista); } Arista minArista; visited.Add(vertice_click.GetId()); while (aristaQueue.Count > 0) { minArista = Utilities.getMinArtista(aristaQueue); if (!visited.Contains(minArista.GetSig().GetId())) { newPrim.findvertice(minArista.GetVid()).agregarArista(minArista.GetSig(), minArista.GetPeso()); prometodor.Add(minArista); visited.Add(minArista.GetSig().GetId()); foreach (Arista arista in minArista.GetSig().GetAristas()) { if (!visited.Contains(arista.GetSig().GetId())) { aristaQueue.Add(arista); } } } aristaQueue.Remove(minArista); } newPrim.SetOrdenAristas(prometodor); newPrim.calcularPesoTotal(); ARMPrim.Add(newPrim); PrimG.Text = ARMPrim.Count.ToString(); PrimList.DataSource = null; PrimList.DataSource = ARMPrim.OrderBy(x => x.GetVertices()[0].GetGroup()).ToList(); newPrim.drawTree(Prim, Color.Yellow); pictureBox1.Image = Prim; verPrim.Enabled = false; verGrafo.Enabled = true; verkruskal.Enabled = true; } } } }