private Vertice vertice_alvo; // public void Monta(Grafo g, string strOrigem) { origem = g.get_vertice(strOrigem); SortedDictionary <string, Vertice> Q = new SortedDictionary <string, Vertice>(); initialize_single_source(g, origem); Q = g.get_vertices(); SortedDictionary <string, Vertice> S = new SortedDictionary <string, Vertice>(); while (Q.Count > 0) { Vertice u = extract_min(Q); u.set_visitado(true); foreach (KeyValuePair <Vertice, double> v in u.get_adjacentes()) { if (v.Key.get_visitado() == true) { continue; } relax(u, v.Key); } add_S(u, S); } /* S tem os pesos finais de caminho mínimos a partir da fonte determinada, assim atualiza o grafo * com os vértices atualizados*/ g.set_vertices(S); }
private void initialize_single_source(Grafo g, Vertice s) { foreach (KeyValuePair <string, Vertice> v in g.get_vertices()) { v.Value.set_distancia(Double.MaxValue); } s.set_distancia(0); }
public bool IsPossible() { int contador = 0; var vertices = _grafo.get_vertices(); foreach (var vertice in vertices) { if (vertice.Value.get_adjacentes().Count % 2 != 0) { contador++; } } if (contador == 0 || contador == 2) { return(true); } else { return(false); } }