public int[,] construyeC() { int[,] c = new int[n, n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i == j) { c[i, j] = 0; } else { c[i, j] = INFINITO; } } } foreach (CArista a in G.getListaAristas()) { c[V.IndexOf(G.buscaNodoVertice(a.getVOrigen())), V.IndexOf(G.buscaNodoVertice(a.getVDestino()))] = a.getPeso(); } return(c); }
//Submenu Algoritmos para Digrafos private void dijkstraToolStripMenuItem_Click(object sender, EventArgs e) { if (grafos != null && grafo_activo != null && grafo_activo.getTipo() == DIRIGIDO && grafo_activo.getNumeroAristas() > 0) { if (!grafo_activo.tienePeso()) { DAddPeso dap = new DAddPeso(grafo_activo.getListaAristas()); grafo_activo.showHideIdAristas(true, (TabPage)Pestanas.Controls[Pestanas.SelectedIndex]); if (dap.ShowDialog() == DialogResult.OK) { grafo_activo.setPesos(dap.getPesos()); grafo_activo.showHideIdAristas(false, (TabPage)Pestanas.Controls[Pestanas.SelectedIndex]); grafo_activo.showHidePesos(true, (TabPage)Pestanas.Controls[Pestanas.SelectedIndex]); DPideVert pdv = new DPideVert(grafo_activo.getNumeroVertices()); if (pdv.ShowDialog() == DialogResult.OK) { CDijkstra djk = new CDijkstra(grafo_activo); djk.calculaCaminoMasCorto(grafo_activo.buscaNodoVertice(pdv.getIdVert())); grafo_activo.showHidePesos(false, (TabPage)Pestanas.Controls[Pestanas.SelectedIndex]); /*foreach (CArista a in grafo_activo.getListaAristas()) * a.setPeso(0);*/ } } else { grafo_activo.showHideIdAristas(false, (TabPage)Pestanas.Controls[Pestanas.SelectedIndex]); } } else { grafo_activo.showHidePesos(true, (TabPage)Pestanas.Controls[Pestanas.SelectedIndex]); DPideVert pdv = new DPideVert(grafo_activo.getNumeroVertices()); if (pdv.ShowDialog() == DialogResult.OK) { CDijkstra djk = new CDijkstra(grafo_activo); djk.calculaCaminoMasCorto(grafo_activo.buscaNodoVertice(pdv.getIdVert())); grafo_activo.showHidePesos(false, (TabPage)Pestanas.Controls[Pestanas.SelectedIndex]); /*foreach (CArista a in grafo_activo.getListaAristas()) * a.setPeso(0);*/ } } } }
public bool esXDescendienteDeY(CVertice X, CVertice Y) { if (Y.getNumero() <= X.getNumero() && X.getNumero() <= (Y.getNumero() + descendientes[G.getListaAdyacencia().IndexOf(G.buscaNodoVertice(Y))])) { return(true); } return(false); }