单源最短路径c++伪代码
时间: 2023-09-14 15:02:25 浏览: 84
以下是单源最短路径算法(Dijkstra算法)的C++伪代码:
```cpp
// 定义一个邻接表存储图
vector<pair<int, int>> adj_list[N];
// 定义距离数组和标记数组
int dist[N];
bool visited[N];
// 初始化距离数组和标记数组
for (int i = 0; i < N; i++) {
dist[i] = INF; // 初始距离为无穷大
visited[i] = false; // 初始标记为未访问
}
// 设置起点的距离为0
dist[start] = 0;
// 重复N次
for (int i = 0; i < N; i++) {
// 找到当前未访问过的距离最小的点
int u = -1;
for (int j = 0; j < N; j++) {
if (!visited[j] && (u == -1 || dist[j] < dist[u])) {
u = j;
}
}
// 标记该点已访问
visited[u] = true;
// 更新u的相邻点的距离
for (auto v : adj_list[u]) {
if (!visited[v.first]) {
dist[v.first] = min(dist[v.first], dist[u] + v.second);
}
}
}
```
其中,`N`为图中点的数量,`INF`为一个足够大的数,表示无穷大,`adj_list`为邻接表,存储图的边和权值,`start`为起点。
阅读全文