C++代码实现dijkstra算法
时间: 2023-08-29 21:12:29 浏览: 117
以下是C++实现的Dijkstra算法的示例代码:
```cpp
#include <iostream>
#include <vector>
#include <queue>
#include <climits>
using namespace std;
const int INF = INT_MAX;
typedef pair<int, int> pii;
void dijkstra(vector<vector<pii>>& graph, int start, vector<int>& distance) {
int n = graph.size();
priority_queue<pii, vector<pii>, greater<pii>> pq;
vector<bool> visited(n);
distance[start] = 0;
pq.push(make_pair(0, start));
while (!pq.empty()) {
int u = pq.top().second;
pq.pop();
if (visited[u]) {
continue;
}
visited[u] = true;
for (auto neighbor : graph[u]) {
int v = neighbor.first;
int w = neighbor.second;
if (distance[u] + w < distance[v]) {
distance[v] = distance[u] + w;
pq.push(make_pair(distance[v], v));
}
}
}
}
int main() {
int n, m;
cin >> n >> m;
vector<vector<pii>> graph(n);
for (int i = 0; i < m; ++i) {
int u, v, w;
cin >> u >> v >> w;
graph[u].push_back(make_pair(v, w));
graph[v].push_back(make_pair(u, w));
}
int start = 0;
vector<int> distance(n, INF);
dijkstra(graph, start, distance);
for (int i = 0; i < n; ++i) {
cout << "Distance from " << start << " to " << i << " is " << distance[i] << endl;
}
return 0;
}
```
该代码使用了堆优化版的Dijkstra算法,其中 `graph` 是一个邻接表,表示图的结构,`start` 是起点,`distance` 是从起点到各个点的最短距离。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)