[概念学習]Dijkstraアルゴリズム
7205 ワード
📒Dijkstra Algorithm
Dijkstraアルゴリズムとは?
DPを使用して、あるノードから別の残りのノードへの最短パスナビゲーションアルゴリズム.
ただし、負のパスがある場合は使用できません.
とくせい
📌特長
📌プロセス
📌インプリメンテーション
void Dijkstra_Using_Heap()
{
priority_queue<pair<int, int>> PQ;
PQ.push(make_pair(0, Start));
Dist[Start] = 0;
while (PQ.empty() == 0)
{
int Cost = -PQ.top().first;
int Cur = PQ.top().second;
PQ.pop();
for (int i = 0; i < Vertex[Cur].size(); i++)
{
int Next = Vertex[Cur][i].first;
int nCost = Vertex[Cur][i].second;
if (Dist[Next] > Cost + nCost)
{
Dist[Next] = Cost + nCost;
PQ.push(make_pair(-Dist[Next], Next));
}
}
}
for (int i = 1; i <= V; i++)
{
if (Dist[i] == INF) cout << "INF" << endl;
else cout << Dist[i] << endl;
}
}
出典:https://yabmoons.tistory.com/364[YAP'sCoding World...]📌関連する問題
Reference
この問題について([概念学習]Dijkstraアルゴリズム), 我々は、より多くの情報をここで見つけました https://velog.io/@gomhyeok/개념공부Dijkstra-Algorithmテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol