- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
#include iostream.h
#include limits
const int size=5;
//返回最短路径的长度
//edge[size][size],输入参数图信息
//nstart,ndest,起点和终点
//path[size]返回路径
int dijkstra(int edge[size][size],int nstart,int ndest,int path[size])
{
int mindis[size];//起点到终点的最短路径产度
bool ins2[size];//标志各点是否在s2中
//初始化
int i;
for(i=0;isize;i++)
{
ins2[i]=true;
}
ins2[nstart]=false;//初始条件只有nstart在s1中,其余在s2中
for(i=0;isize;i++)
{
mindis[i]=edge[nstart][i];//初始各点的最短距离
if(edge[nstart][i]INT_MAX)
path[i]=nstart;//最短路径的前一点
else
path[i]=-1;//前一点点不存在
}
//进行计算
while(ins2[ndest])//当ndest还在s2中进行计算
{
//查找s2中最短路径的最小值的点
int nminlen=INT_MAX;//最短路径长度的最小值
int npoint=-1;//拥有最小值的点
for(i=0;isize;i++)//查找
{
if((ins2[i])(mindis[i]nminlen))
{
nminlen=mindis[i];
npoint=i;
}
}
if(nminlen==INT_MAX)
break;
//更新s2和mindis
ins2[npoint]=false;//该点从s2移入s1
for(i=0;isize;i++)
{
if((ins2[i])(edge[npoint][i]INT_MAX))//对s2中的点与该点有边相连
{
int nnewlen=nminlen+edge[npoint][i];
if(nnewlenmindis[i])//如果原路径长
{
path[i]=npoint;//更新路径
mindis[i]=nnewlen;//更新路径长度
}
}
}
}
return mindis[ndest];
}
void outputpath(int path[size],int ndest)
{
if(path[ndest]==-1)
cout没有从起点到vndest的路径endl;
else if(path[ndest]==ndest)
coutvndest;
else
{
outputpath(path,path[ndest]);//输出前面的路径
cout--vndest;//输出这一段边
}
}
int main()
{
int edge[size][size];
int i,j;
//构造图信息
for(i=0;isize;i++)
{
for(j=0;jsize;j++)
edge[i][j]=INT_MAX;
edge[i][i]=0;
}
edge[0][1]=10;
edge[0][2]=12;
edge[1][3]=10;
edge[2][4]=7;
edge[3][0]=15;
edge[3][1]=12;
edge[3][4]=7;
int path[size];//记录最短路径信息
int npathlength=dijkstra(edge,0,4,path);//计算从v0到v4的最短路径长度
if(npathlength==INT_MAX)
cout没有v0到v4路径可通endl;
else
{
cout从v0到v4的最短路径为:endl;
outputpath(path,4);
coutendl;
cout路径长度为:npathlengthendl;
}
return 0;
}
您可能关注的文档
最近下载
- 2025年包装机项目可行性分析报告.docx
- 云南省昭通市2025届中考 数学模拟试卷.docx VIP
- xxx30兆瓦特许权光伏电站职业病危害控制效评价报告书.doc VIP
- 八年级信息科技第一章《从感知到物联》单元整体教学设计.docx VIP
- 合同能源节能改造项目可行性研究报告.pdf VIP
- 票据业务知识培训课件.pptx VIP
- SEMI E30-1103(完整中文版本).pdf
- 05SFG04-钢结构装配式防倒塌棚架结构设计图集.pdf VIP
- 2018年下半年全国事业单位联考A类《综合应用能力》题及参考答案.pdf VIP
- 中国上海国际艺术节中心招聘笔试备考题库及完整答案详解1套.docx VIP
文档评论(0)