私はGraphsアルゴリズムを実装し始めました。このDijkstra実装では、ソースからデスティネーションへのパスをどのように印刷するのか分かりません。 は、ダイクストラを使用すると、設定され、あなたの「訪問したセット」にノードを追加するたびに、あなたDijikstra計算後のパスの印刷方法は?
#define INF 0x3f3f3f3f
typedef pair<int,int> ii; // to vertex, weight
typedef vector<ii> vii; // from source to vertexes with weight
typedef vector<vii> graph; // graph
graph gg;
vector<int> Dist;
void Dijikstra(int source, int N){
priority_queue<ii, vii, greater<ii>> Q;
Dist.assign(N,INF);
Dist[source] = 0;
Q.push(make_pair(0,source));
while (!Q.empty())
{
ii front = Q.top(); Q.pop();
int d = front.first, u = front.second;
if(d > Dist[u]) continue;
for (int i = 0; i < gg[u].size(); i++)
{
ii v = gg[u][i];
if(Dist[u]+v.second < Dist[v.first]){
Dist[v.first] = Dist[u] + v.second;
Q.push(ii(Dist[v.first],v.first));
}
}
}
}
は、あなたのグラフ指向かいませんか? – alexeykuzmin0