C语言实现迪杰斯特拉算法求解单源最短路径问题
///'#include <stdio.h>//n#include <stdlib.h>//n#include <limits.h>//n//n#define MAX_VERTICES 100//n#define INF INT_MAX//n//ntypedef struct {//n int weight;//n int visited;//n} Vertex;//n//nint minDistance(Vertex vertices[], int n) {//n int min = INF, min_index = -1;//n for (int v = 0; v < n; v++) {//n if (vertices[v].visited == 0 && vertices[v].weight <= min) {//n min = vertices[v].weight;//n min_index = v;//n }//n }//n return min_index;//n}//n//nvoid dijkstra(int graph[MAX_VERTICES][MAX_VERTICES], int src, int dest, int n) {//n Vertex vertices[MAX_VERTICES];//n int distances[MAX_VERTICES];//n int path[MAX_VERTICES];//n //n for (int v = 0; v < n; v++) {//n vertices[v].weight = INF;//n vertices[v].visited = 0;//n distances[v] = INF;//n path[v] = -1;//n }//n //n vertices[src].weight = 0;//n distances[src] = 0;//n //n for (int count = 0; count < n - 1; count++) {//n int u = minDistance(vertices, n);//n vertices[u].visited = 1;//n //n for (int v = 0; v < n; v++) {//n if (vertices[v].visited == 0 && graph[u][v] != INF && vertices[u].weight != INF && vertices[u].weight + graph[u][v] < vertices[v].weight) {//n vertices[v].weight = vertices[u].weight + graph[u][v];//n distances[v] = vertices[v].weight;//n path[v] = u;//n }//n }//n }//n //n printf(/'从顶点 %d 到顶点 %d 的最短路径为:/', src, dest);//n int i = dest;//n printf(/'%d /', i);//n while (path[i] != -1) {//n printf(/'<- %d /', path[i]);//n i = path[i];//n }//n printf(/'//n最短路径长度为:%d//n/', distances[dest]);//n}//n//nint main() {//n int n, e, src, dest;//n printf(/'请输入顶点数和边数:/');//n scanf(/'%d%d/', &n, &e);//n //n int graph[MAX_VERTICES][MAX_VERTICES];//n //n for (int i = 0; i < n; i++) {//n for (int j = 0; j < n; j++) {//n graph[i][j] = INF;//n }//n }//n //n printf(/'请输入每条边的起点、终点和权重://n/');//n for (int i = 0; i < e; i++) {//n int u, v, weight;//n scanf(/'%d%d%d/', &u, &v, &weight);//n graph[u][v] = weight;//n }//n //n printf(/'请输入源顶点和目标顶点:/');//n scanf(/'%d%d/', &src, &dest);//n //n dijkstra(graph, src, dest, n);//n //n return 0;//n}//n/
原文地址: https://www.cveoy.top/t/topic/pDPv 著作权归作者所有。请勿转载和采集!