请为我写一份节约算法代码,只需要能够求出最短的配送里程,并且将结果展示给我,代码需要能够在Vi算了studio上运行
时间: 2024-05-20 20:15:51 浏览: 23
好的,我可以为您编写一份节约算法代码。以下是代码:
#include <iostream>
using namespace std;
const int INF = 0x3f3f3f3f; // 无穷大设为极大值
int n; // 配送点数量
int w[105][105]; // 两点之间的距离
int d[105]; // 到源点的最短距离
bool vis[105]; // 记录是否已经遍历过
void dijkstra(int s) {
memset(vis, false, sizeof(vis));
memset(d, INF, sizeof(d)); // 起始点到各点的距离全部设为 INF
d[s] = 0;
for (int i = 1; i <= n; ++i) {
int u = 0; // 记录当前未遍历过的点中距离最小的点
for (int j = 1; j <= n; ++j)
if (!vis[j] && (u == 0 || d[j] < d[u]))
u = j;
if (u == 0) break; // 当前所有点都已遍历过,跳出循环
vis[u] = true;
for (int v = 1; v <= n; ++v)
if (!vis[v])
d[v] = min(d[v], d[u] + w[u][v]);
}
}
int main() {
cin >> n;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j)
cin >> w[i][j];
dijkstra(1); // 以点 1 为起点求最短路径
cout << d[n] << endl; // 输出起点到终点的最短距离
return 0;
}
这是一份经典的 Dijkstra 算法代码,可以求出指定起点到终点的最短距离。您只需要将配送点的距离作为输入,指定起点为 1,终点为 n 即可。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)