static void relax(Vertice u, Vertice v) { int distancia = u.get_distancia() + u.get_peso(v); if (v.get_distancia() > distancia) { v.set_distancia(distancia); v.set_vertice_caminho_anterior(u); //Console.WriteLine("Atualizei a distância " + distancia + " do vértice " + u.get_id() + " para o vértice " + v.get_id()); } else { //Console.WriteLine("NÃO atualizei a distância " + distancia + " do vértice " + u.get_id() + " para o vértice " + v.get_id()); } }
static Vertice extract_min(SortedDictionary <int, Vertice> Q) { var key = Q.Keys.ToList()[0]; Vertice min = Q[key]; foreach (KeyValuePair <int, Vertice> v in Q) { if (v.Value.get_distancia() < min.get_distancia()) { min = v.Value; } } Q.Remove(min.get_id()); return(min); }