我想打印最小的道路数据

时间:2019-12-09 21:50:51

标签: database

我想打印最小的道路,但是我不知道必须选择哪个变量,有人可以帮我吗? 该代码是西班牙语。

int algoritmo(const int begin, const int end, const Graph graph)
{
priority_queue<State> pq; // La cola de prioridad.
vector<int> Dist(graph.V, oo); // La distancia hacia todos los vertices. Inicialmente para cada vertice su valor es infinito.
vector<bool> mark(graph.V, false); // Este arreglo nos permitira determinar los nodos procesados.

Dist[begin] = 0; // Valor inicial del vertice de partida.
pq.push(State(begin, 0)); // Agregamos el primer elemento, que no es mas que el vertice de partida.
while(!pq.empty()) // Mientras existan vertices por procesar.
{
    State st = pq.top(); pq.pop(); // Se desencola el elemento minimo.
    mark[st.node] = true;// Se marca el nodo como visitado.
    if (st.node == end)
        return st.cost; // Retornamos el valor del camino, hemos llegado al vertice destino.

    int T = (int)graph.G[st.node].size();
    for(int i = 0; i < T; ++i) // Se recorren las adyacencias de "a".
    {
        // Si no ha sido procesado el vertice "vi" y la distancia hacia "vi" es menor a la distancia
        // en Dist entonces hemos encontrado un camino mas corto a "vi".
        if (!mark[graph.G[st.node][i].node] && ((Dist[st.node] + graph.G[st.node][i].cost) < Dist[graph.G[st.node][i].node]))
        {
            Dist[graph.G[st.node][i].node] = st.cost + graph.G[st.node][i].cost;
            pq.push(State(graph.G[st.node][i].node, st.cost + graph.G[st.node][i].cost));
        }
    }
    //cout<<st.node<<endl;
}
return -1; // Si no se puede llegar al destino, retornar -1.
}

0 个答案:

没有答案