一点到其他点的最短路径
来源:互联网 发布:删除静态ip ubuntu 编辑:程序博客网 时间:2024/06/11 01:00
M*M的方格矩阵,其中有一部分为障碍,八个方向均可以走,现假设矩阵上有Q+1节点,从(X0,Y0)出发到其他Q个节点的最短路径。
其中,1<=M<=1000,1<=Q<=100。
#include <iostream>#include <stack>using namespace std;#define M 100#define N 100typedef struct node {int matrix[M][N];int n;//顶点数int e;//边数} MGraph;void dijstraPath(MGraph g, int* dist, int* path, int v0) {bool* visited = new bool[sizeof(bool) * g.n];for (int i = 0; i < g.n; ++i) {if (g.matrix[v0][i] > 0 && i != v0) {dist[i] = g.matrix[v0][i];path[i] = v0;} else if (i == v0) {dist[v0] = 0;path[v0] = v0;} else {dist[i] = INT_MAX;path[i] = -1;}visited[i] = false;}visited[v0] = true;for (int i = 1; i < g.n; ++i) {int min = INT_MAX;int u = v0;for (int j = 0; j < g.n; ++j) {if (!visited[j] && dist[j] < min) {min = dist[j];u = j;}}visited[u] = true;for (int i = 0; i < g.n; ++i) {if (!visited[i] && g.matrix[u][i] > 0&& g.matrix[u][i] + min < dist[i]) {dist[i] = g.matrix[u][i] + min;path[i] = u;}}}}void showPath(int* path, int v, int v0) {stack<int> s;while (v0 != v) {s.push(v);v = path[v];}s.push(v);while (!s.empty()) {cout << s.top() << " ";s.pop();}}int main() {MGraph g;g.e = 7;g.n = 5;memset(g.matrix, 0, sizeof(int) * N * M);//初始化数据g.matrix[0][1] = 100;g.matrix[0][2] = 30;g.matrix[0][4] = 10;g.matrix[2][1] = 60;g.matrix[2][3] = 60;g.matrix[3][1] = 10;g.matrix[4][3] = 50;int v0 = 0;int* dist = new int[g.n];int* path = new int[g.n];dijstraPath(g, dist, path, v0);for (int i = 0; i < g.n; i++) {if (i != v0) {showPath(path, i, v0);cout << " shortest route: " << dist[i] << endl;}}return 0;}
0 0
- 一点到其他点的最短路径
- 根据无向图的边邻接矩阵求任意一点到其他所有点之间的最短路径。
- Dijkatra 算法 计算一个点到其他点的最短路径
- Dijkstra算法实现从一个源点到其他各点的最短路径
- Dijkstra [迪杰斯特拉]算法思路(求单点到其他每个点的各个最短路径)Floyd算法:任意两点间最短距离
- 点对的最短路径问题
- Dijkstra算法求任意点到其它点的最短路径
- 图论04—任意指定点到所有其它点的最短路径及距离
- dijkstra(n^2)求某个点到所有点的最短路径
- POJ 1502 迪杰斯特拉求0节点到其他节点最短路径的最大值
- Dijkstra算法(一个节点到其他所有节点的最短路径)
- MySQL空间数据库–查询点到多点间的最短路径
- MySQL空间数据库采用勾股定律,查询点到多点间的最短路径
- MySQL空间数据库–查询点到多点间的最短路径
- 004-迪杰斯特拉算法求解最短路径的一点思想
- 给定一个8*8的方格子,A点到B点的最短路径有多少条?
- 有向图某顶点到其他顶点最短路径的C程序实现代码(Dijkstra算法)
- 所有点对的最短路径-FloydWarshall算法
- TCP/IP、Http、Socket的区别
- linux应用程序(1)---动态链接库
- 2017.1.13【初中部 】普及组模拟赛C组 maxsum 最大约数和 题解
- 聊聊高并发系统之限流特技-1
- zabbix通过简单shell命令监控elasticsearch集群状态
- 一点到其他点的最短路径
- Hadoop集群安装---虚拟机网络配置
- Ubuntu16.04+ROS+Kinect2运行DSO(Direct Sparse Odometry)
- 小D java基础系列1.4 Java三件套&JDK的安装与配置
- sduacm16级寒假热身赛解题报告
- Boxes in a Line UVA - 12657
- Android Studio导入Eclipse工程的步骤
- Maven Profile 多环境构建
- 聊聊高并发系统之限流特技-2