#include <iostream>
#include <vector>
#include <climits>
using namespace std;
void dijkstra(vector<vector<int>>& graph, int src, vector<int>& dist, vector<bool>& visited) {
int V = graph.size();
for (int i = 0; i < V; ++i) {
dist[i] = INT_MAX;
visited[i] = false;
}
dist[src] = 0;
for (int count = 0; count < V - 1; ++count) {
int u = findMinDistance(dist, visited);
visited[u] = true;
for (int v = 0; v < V; ++v) {
if (!visited[v] && graph[u][v] != 0 && dist[u] != INT_MAX &&
dist[u] + graph[u][v] < dist[v]) {
dist[v] = dist[u] + graph[u][v];
}
}
}
}
int main() {
// ... 输入图形数据、初始化等 ...
dijkstra(graph, src, dist, visited);
// ... 输出结果 ...
return 0;
}
迪杰斯特拉
最新推荐文章于 2025-05-08 14:20:07 发布