迪杰斯特拉算法求最短路径
来源:互联网 发布:怎样建立网络平台 编辑:程序博客网 时间:2024/05/01 14:39
1、[问题描述]
已知有向图有12个顶点,21条边,起点为S,终点为E,求从S到E的最小成本花费W。(如图)
起点 终点 花费 起点 终点 花费 起点 终点 花费
1 2 9 4 8 11 9 12 4
1 3 7 5 7 11 10 12 2
1 4 3 5 8 8 11 12 5
1 5 2 6 9 6
2 6 4 6 10 5
2 7 2 7 9 4
2 8 1 7 10 10
3 6 2 8 10 15
3 7 7 8 11 16
[输入要求]
有多组测试数据,第一行输入S(1<=S<12),其中S为起点,E=12为终点,
[输出要求]
每组测试数据对应一个输出,输出S到终点E最小成本花费W
[样例输入]
1
2
[样例输出]
16
10
源码分析:
#include <iostream.h>
#include <fstream.h>
#define MAX 100
#define MAX_INT 10000
for(i=0;i<MAX;i++) for(i=1;i<=v;i++) s[st]=1; for(k=1;k<=v;k++) int main() int c[MAX][MAX],v,e,i,st,ed,w;/*v是点数,e是边数,st是开始点,ed是指向点,w是权值*/
int Shortest(int edge[][MAX],int v,int e,int st,int ed)
{
int weight[MAX],s[MAX];/*weight数组是记录起点到其他点的最短距离,s数组是标记集合*/
int i,j,k,mindist,u;
s[i]=0;
{
if(edge[st][i]!=-1)
{
weight[i]=edge[st][i];
}
else
{
weight[i]=-1;
}
}/*赋值weight所有与起点邻接的点距离,不邻接的赋值为-1*/
weight[st]=0;/*起始点初始化*/
{
mindist=MAX_INT;
u=st;
for(i=1;i<=v;i++)
if(weight[i]>0&&s[i]==0&&weight[i]<mindist)
{
mindist=weight[i];
u=i;
}/*找到与起点邻接的距离最短点,记为u*/
s[u]=1;/*标记u,并入s集合*/
for(j=1;j<=v;j++)
{
if(edge[u][j]!=-1)/*找新入点的邻接点*/
if(s[j]==0&&(weight[j]==-1)||(edge[u][j]+weight[u]<weight[j]))
{
weight[j]=edge[u][j]+weight[u];
}
}
}/*新点并入集合后,刷新点之间的可达记录*/
cout<<weight[ed]<<endl;/*输出到终点的最短权值*/
return 0;
}
{
ifstream infile("D://g.txt",ios::in);
int a,b;
while(infile>>v>>e){
for(a=0;a<MAX;a++)
for(b=0;b<MAX;b++)
c[a][b]=-1;
for(i=0;i<e;i++){
infile>>st>>ed>>w;
c[st][ed]=w;
c[ed][st]=w;
}
cout<<"Test case:输入起始点:/n";
while(cin>>st)
{
Shortest(c,v,e,st,v);
}
}
return 0;
}
- 迪杰斯特拉算法求最短路径
- 迪杰斯特拉算法求最短路径
- 迪杰斯特拉算法求最短路径
- 迪杰斯特拉算法求最短路径
- 迪杰斯特拉算法求最短路径
- 迪杰斯特拉算法 求最短路径
- 迪杰斯特拉算法(求最短路径)
- 贪心算法 迪杰斯特拉算法求最短路径
- 迪杰斯特拉算法求最短路径 C++代码实现
- 迪杰斯特拉算法求最短路径 C++代码实现
- 【算法小总结】迪杰斯特拉(Dijkstra)求最短路径
- 【算法】Dijkstra 求最短路径算法
- 弗洛伊德算法求最短路径
- dijkstra 求最短路径算法
- Floyd算法求最短路径
- Bellman_Ford算法求最短路径
- Dijkstra算法求最短路径
- Dijkstra 算法求最短路径
- Ext的使用和实用的例子和代码
- 第一篇文章
- 结构体内存对齐
- 商品交易系统之---交易权限
- dede v5.5注册会员邮箱验证功能设置教程
- 迪杰斯特拉算法求最短路径
- Hash join算法原理
- AIX系统日常管理
- html cellpadding cellspacing 属性
- 迷茫的解决方案~~
- 幼齿,调教,插入,深喉,人兽,多P……你懂得!!
- AIX常用命令
- 商品交易系统之---配对原则及成交
- RS/6000小型机故障的基本定位方法