代码:《挑战程序设计竞赛》2.5.4
#include<iostream>
using namespace std;
#define MAX_N 100
#define INF 1000
class Edge
{
public:
int from, to, cost;
};
Edge edge[MAX_N]; //边
int d[MAX_N]; //最短距离
int V, E; //顶点和边的个数
void FindShortestpath(int s) //输入起点
{
for (int i = 0; i < V; i++) d[i] = INF; //初始化
d[s] = 0;
while (true)
{
bool update = false; //更新标志
for (int i = 0; i < E; i++) //每条边进行判断,看是否能更新距离
{
Edge e = edge[i];
if (e.from != INF && e.to > e.from + e.cost) //如果起点已经经历过,且终点距离可以变得更小
{
e.to = e.from + e.cost; //更新距离
update = true;
}
}
if (update == false) break; //所有点都经历过,则中断
}
}
int main()
{
//初始化图
//输入起点终点,并调用函数计算出最短距离
return 0;
}