private void primButton_Click(object sender, EventArgs e) { List <Ciudad> L = new List <Ciudad>(); listaAristas ARM = new listaAristas(); Arista E = new Arista(); Pen pen1 = new Pen(Color.GreenYellow, 10); pen1.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor; int n = listaCiudades.Count; while (L.Count != n) { int x = 1, y = 1, x2 = 1, y2 = 1; E = aristaMenor(ref L); ARM.Add(E); foreach (Ciudad myCiudad in listaCiudades) { if (E.origen == myCiudad.nombre) { x = myCiudad.x; y = myCiudad.y; } } foreach (Ciudad myCiudad in listaCiudades) { if (E.destino == myCiudad.nombre) { x2 = myCiudad.x; y2 = myCiudad.y; } } mexicoPictureBox.CreateGraphics().DrawLine(pen1, x, y, x2, y2); //Console.WriteLine("x: " + x + " Y: " + y + " x2: " + x2 + " Y2: " + y2); if (encontrarArista(ref L, ref E)) { Ciudad n1 = new Ciudad(E.destino, 0, 0); L.Add(n1); } else { Ciudad n2 = new Ciudad(E.origen, 0, 0); L.Add(n2); } } //ARM.Add(E); }
// TERMINA PRIM // COMIENZA KRUSKAL private void Kruskal_Click(object sender, EventArgs e) { Graphics papel; papel = mexicoPictureBox.CreateGraphics(); Pen pen = new Pen(Color.Green, 10); pen.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor; List <listaListas> CC = new List <listaListas>(); listaAristas T = new listaAristas(); foreach (Ciudad myCiudad in listaCiudades) { listaListas nuevo = new listaListas(); nuevo.nombre = myCiudad.nombre; nuevo.x = myCiudad.x; nuevo.y = myCiudad.y; CC.Add(nuevo); } int N = listaCiudades.Count; listaAristas A = new listaAristas(); quickSort(0, listaVuelos.Count - 1); foreach (Vuelo myVuelo in listaVuelos) { Arista nuevo = new Arista(); nuevo.origen = myVuelo.origen; nuevo.destino = myVuelo.destino; nuevo.ponderacion = myVuelo.tiempo; A.Add(nuevo); } Arista v = new Arista(); while (T.Count < N - 1) { v = A[0]; A.RemoveAt(0); int c1 = 0, c2 = 0; bool flag = false; foreach (listaListas lista1 in CC) { if (lista1.nombre == v.origen) { break; } else { foreach (Ciudad ciudad2 in lista1.ciudades) { if (ciudad2.nombre == v.origen) { flag = true; break; } } } if (flag == true) { break; } c1++; } flag = false; foreach (listaListas lista2 in CC) { if (lista2.nombre == v.destino) { break; } foreach (Ciudad myCiudad2 in lista2.ciudades) { if (myCiudad2.nombre == v.destino) { flag = true; break; } } if (flag == true) { break; } c2++; } if (c1 != c2) { T.Add(v); MessageBox.Show(v.origen + v.destino); int x = 0, y = 0, x2 = 0, y2 = 0; foreach (Ciudad myCiudad in listaCiudades) { if (myCiudad.nombre == v.origen) { x = myCiudad.x; y = myCiudad.y; } } foreach (Ciudad myCiudad in listaCiudades) { if (myCiudad.nombre == v.destino) { x2 = myCiudad.x; y2 = myCiudad.y; } } papel.DrawLine(pen, x, y, x2, y2); Ciudad nuevo = new Ciudad(CC[c2].nombre, 0, 0); foreach (Ciudad myCiudad in CC[c2].ciudades) { Ciudad nuevo2 = new Ciudad(myCiudad.nombre, 0, 0); nuevo2.nombre = myCiudad.nombre; nuevo2.x = myCiudad.x; nuevo2.y = myCiudad.y; CC[c1].ciudades.Add(nuevo2); } nuevo.nombre = CC[c2].nombre; nuevo.x = CC[c2].x; nuevo.y = CC[c2].y; CC[c1].ciudades.Add(nuevo); CC.RemoveAt(c2); } } foreach (Arista myArista in T) { Console.WriteLine(myArista.origen); Console.WriteLine(myArista.destino); Console.WriteLine("--"); } }