private void metodosAdicionales(object sender, ToolStripItemClickedEventArgs e) { numericUpDown1.Visible = false; numericUpDown2.Visible = false; numericUpDown3.Visible = false; int i = 0; int j = 0; bool vacio = false; bool band = false; Random rand = new Random(); switch (e.ClickedItem.AccessibleName) { case "complemento": bpar = false; quitaPesos(); quitaNumeric(); obtenPropiedades(); if (AristaNoDirigida.Enabled == true && AristaDirigida.Enabled == true) { grafo = new GrafoNoDirigido(grafo); grafo.tipo = 2; grafo = grafo.complemento(g); asignaPropiedades(); AristaDirigida.Enabled = false; } else if (AristaDirigida.Enabled == true && AristaNoDirigida.Enabled == false) { grafo = grafo.complemento(g); asignaPropiedades(); grafo.penA.CustomEndCap = arrow; } else if (AristaDirigida.Enabled == false && AristaNoDirigida.Enabled == true) { grafo = grafo.complemento(g); asignaPropiedades(); } grafo.numN = grafo.Count; //grafo.ImprimirGrafo(g); Form1_Paint(this, null); break; case "preExamen_1": if (AristaNoDirigida.Enabled == true && AristaDirigida.Enabled == false) { PreExamen pre = new PreExamen(grafo); pre.Show(); } else { MessageBox.Show("Tiene que ser grafo no dirigido"); } break; case "nPartita": bpar = true; List <List <int> > partita = new List <List <int> >(); List <Color> color = coloreate(); partita = grafo.nPartita(g); //grafo.ImprimirGrafo(g, bpar); nPartita nPartita = new nPartita(partita, grafo); i = rand.Next(0, color.Count); foreach (List <int> aux1 in partita) { foreach (int aux2 in aux1) { grafo.Find(x => x.nombre.Equals(aux2)).colorN = new SolidBrush(color[i]); j = i; } if (i < color.Count - 1) { i++; } else { i = 0; } } // grafo.ImprimirGrafo(g, bpar); // Form1_Paint(this, null); // grafo.ImprimirGrafo(g, bpar); nPartita.Show(); break; case "MatrizInfinita": MatrizInfinita matriz = new MatrizInfinita(grafo); matriz.Show(); break; case "nodoPendiente": List <int> pendientes = new List <int>(); List <int> cut = new List <int>(); grafo = new GrafoNoDirigido(grafo); grafo.tipo = 2; bpar = true; pendientes = grafo.nodoPendiente(); if (pendientes.Count == 0) { MessageBox.Show("No tiene nodo Pendiente"); } // cut = grafo.verticeCut(); foreach (int aux1 in pendientes) { grafo.Find(x => x.nombre.Equals(aux1)).colorN = new SolidBrush(Color.Red); grafo.Find(x => x.nombre.Equals(aux1)).aristas[0].destino.colorN = new SolidBrush(Color.Green); grafo.Find(x => x.nombre.Equals(aux1)).aristas[0].colorA = new Pen(new SolidBrush(Color.Blue)); grafo.Find(x => x.nombre.Equals(aux1)).aristas[0].destino.aristas[0].colorA = new Pen(new SolidBrush(Color.Blue)); } foreach (int nodo in cut) { grafo.Find(x => x.nombre.Equals(nodo)).colorN = new SolidBrush(Color.Green); } bpar = true; break; case "Euleriano": Euler(); break; case "warner": int warner; warner = grafo.warner(g, nodoW); if (warner == 1) { MessageBox.Show("Tiene un K5"); } else if (warner == 2) { MessageBox.Show("Tiene un K3,3"); } else { MessageBox.Show("No tiene K5 ni K3,3"); } break; case "dijkstra": algoritmoDijkstra(); break; case "kruskal": iKruskal = 0; algoritmoKruskal(); break; } }