图的最短路径
来源:互联网 发布:三明学院网络教学平台 编辑:程序博客网 时间:2024/05/16 07:21
#include <iostream>using namespace std;const int MAXVERTEXNUM = 100;const int MAX_WEIGHT = 32767;struct MGraph{ char vers[MAXVERTEXNUM]; int edges[MAXVERTEXNUM][MAXVERTEXNUM]; int n, e;};void CreateMGraph(MGraph *G, int adjmatrix[][MAXVERTEXNUM]){ cout << "请输入图的顶点和边数:" << endl; cin >> G->n >> G->e; cout << "请输入顶点信息:" << endl; for(int i = 0; i < G->n; i++) cin >> G->vers[i]; for(i = 0; i < G->n; i++) for(int j = 0; j < G->n; j++) adjmatrix[i][j] = MAX_WEIGHT; for(int k = 0; k < G->e; k++) { int x, y, dut; cout << "请输入第" << k + 1 << "条边所依附的顶点及其权值:" << endl; cin >> x >> y >> dut; adjmatrix[x][y] = dut; }}void ShortestPath(MGraph *G, int adjmatrix[][MAXVERTEXNUM], int v){ int n = G->n; int i, j; int dist[MAXVERTEXNUM]; int path[MAXVERTEXNUM]; int s[MAXVERTEXNUM]; for(i = 0; i < n; i++) { s[i] = 0; dist[i] = adjmatrix[v][i]; if(i != v && dist[i] < 32767) path[i] = v; else path[i] = -1; } s[v] = 1; i = (v + 1) % n; while(i != v) { int mindist = MAX_WEIGHT; int u = 0; for(j = 0; j < n; j++) if(s[j] == 0 && dist[j] < mindist) { u = j; mindist = dist[j]; } if(mindist == MAX_WEIGHT) break; s[u] = 1; for(j = 0; j < n; j++) if(s[j] == 0 && adjmatrix[u][j] < MAX_WEIGHT && adjmatrix[u][j] + dist[u] < dist[j]) { dist[j] = dist[u] + adjmatrix[u][j]; path[j] = u; } i = (i + 1) % n; } cout << "从顶点" << G->vers[v] << "到其它顶点的最短路径如下:" << endl; i = (v + 1) % n; while(i != v) { j = i; if(path[j] == -1) { cout << "没有" << G->vers[v] << "到" << G->vers[j] << "的路径!" << endl; } if(dist[i] < MAX_WEIGHT) { char pathnum[MAXVERTEXNUM]; int k = 0; while(path[j] != -1) { pathnum[k] = j; k++; j = path[j]; } cout << G->vers[v] << " "; while(k > 0) cout << "->" << G->vers[pathnum[--k]] << " "; cout << "长度为:" << dist[i] << endl; } i = (i + 1) % n; }}int main(){ int adjmatrix[MAXVERTEXNUM][MAXVERTEXNUM]; MGraph G; CreateMGraph(&G, adjmatrix); ShortestPath(&G, adjmatrix, 0); return 0;}
0 0
- 图的最短路径
- 图的最短路径
- 图的最短路径
- 图的最短路径
- 图的最短路径
- 图@ 最短路径
- 图---最短路径
- 图 - 最短路径
- 图的最短路径的问题
- 图:求图的最短路径
- 关于图的最短路径
- 数据结构---->图的最短路径
- 图的最短路径dijkstra算法
- 图的最短路径搜索
- 图的最短路径-升级版
- 有向图的最短路径
- 图的最短路径算法
- 图的最短路径学习笔记
- 几款测绘用无人机(翔宇,Trimble UX5,拓普康天狼星 Sirus)的简单比较
- makefile学习
- java泛型
- LeetCode_36---Valid Sudoku
- 如何在Android中定义容量巨大的数组
- 图的最短路径
- XmlRootElement JAXB注解
- AndroidManifest.xml详解(下)
- 全双工和半双工的区别
- 无法将类型为“Shell32.ShellClass”的 COM 对象强制转换为接口类型“Shell32.IShellDispatch 6”
- 百度天气预报接口
- OSG开发概览
- STL学习笔记之容器--stack
- windows窗口样式