[理学]dijsktra模板最短路径

[理学]dijsktra模板最短路径

ID:24996449

大小:77.68 KB

页数:3页

时间:2018-11-17

[理学]dijsktra模板最短路径_第1页
[理学]dijsktra模板最短路径_第2页
[理学]dijsktra模板最短路径_第3页
资源描述:

《[理学]dijsktra模板最短路径》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、intdist[maxnum];//表示当前点到源点的最短路径长度intprev[maxnum];//记录当前点的前一个结点intc[maxnum][maxnum];//记录图的两点间路径长度intn,line;//图的结点数和路径数 voidDijkstra(intn,intv,int*dist,int*prev,intc[maxnum][maxnum]){bools[maxnum];//判断是否已存入该点到S集合中for(inti=1;i<=n;++i){dist[i]=c[v][i];s[i]=0;/

2、/初始都未用过该点if(dist[i]==maxint)prev[i]=0;elseprev[i]=v;}dist[v]=0;s[v]=1; //依次将未放入S集合的结点中,取dist[]最小值的结点,放入结合S中//一旦S包含了所有V中顶点,dist就记录了从源点到所有其他顶点之间的最短路径长度for(inti=2;i<=n;++i){inttmp=maxint;intu=v;//找出当前未使用的点j的dist[j]最小值for(intj=1;j<=n;++j)if((!s[j])&&dist[j]

3、p){u=j;//u保存当前邻接点中距离最小的点的号码tmp=dist[j];}s[u]=1;//表示u点已存入S集合中 //更新distfor(intj=1;j<=n;++j)if((!s[j])&&c[u][j]

4、e[tot]=u;tot++;inttmp=prev[u];while(tmp!=v){que[tot]=tmp;tot++;tmp=prev[tmp];}que[tot]=v;for(inti=tot;i>=1;--i)if(i!=1)cout<";elsecout<>n;//输入路径数cin>>line;intp,q,l

5、en;//输入p,q两点及其路径长度 //初始化c[][]为maxintfor(inti=1;i<=n;++i)for(intj=1;j<=n;++j)c[i][j]=maxint; for(inti=1;i<=line;++i){cin>>p>>q>>len;if(len

6、or(intj=1;j<=n;++j)printf("%8d",c[i][j]);printf("");} Dijkstra(n,1,dist,prev,c); //最短路径长度cout<<"源点到最后一个顶点的最短路径长度:"<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。