在图中标出(2,3) (4,6) (5,9)的dijkstra最短路径算法。

运筹学课后答案2_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
运筹学课后答案2
上传于||暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩47页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢&8.38& AOE
&&& 1e&j,k&,AOE-
&&& 2v0ve[0]0ve[i](1in-1)n3
&&& 3vnvl[n-1]=ve[n-1],vl[i](n-2i2)
&&& 4vevlse(s)1se(s)=l(s),
&&& 8.208.218.20,StackFindInDegree(G,
indegree)Gindegree
int topologicalOrder(ALGraph G,Stack T)
&{ /* Gve()*/
&& /* TS*/
&& /* GTGOKERROR*/
FindInDegree(G, indegree);&&&&&&&&&&&&&&&&&
indegree[0..vernum-1]*/
&InitStack(S);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
count = 0;& ve[0..G.vexnum-1]
= 0;&&&&&&&&&&
for (i=0; i&G. i++)&&&&&&&&&&&&&&&&
& {if (indegree[i]==0)& push(S,i); }
while (StackEmpty(S)) {
&& Pop (Sj);& Push (Tj);& ++ &&&&/* jT*/
&& for (=.adjlist[j]. p=p-&next)
&&& { k = p-& &&&&&&&&&&&&&&&&&&&&&&&&/*j1*/
& &&&&if- - indegree[k] = = 0)& Push(Sk);& /*0, */
&&&&& if (ve[j]+*
(p-&info)&ve[k])&&
ve[k] = ve[j]+*(p-&info)
if (count&G.
vexnum)& return 0;&&&&&&&&&&&&
else return 1
} /* TopologicalOrder*/
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 8.20
int Criticalpath(ALGraph G)
&&InitStack(T);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (! TopologicalOrder (G,T) )&& return 0&&&&&& /*0*/
vl[0..G.vexnum-1] = ve [G.vexnum-1];& &&&&&&&&&&/*
while (! StackEmpty (T) )&&&&&&&&&&
&&&&&&&&&&/*vl*/
&&&& for (Pop(T,j), p=G.
adjlist[j]. p=p-&next)
&&&&& { k=p-&& dut = * (p-&info);&&
&&&&&& if ( vl [k]-dut
& vl [j] )& vl [j] = vl [k] –
for ( j=0; j&G. + +j)&
&&&&&&&&&&&&&&&&&&/*el*/
&&&&& for (p=G.adjlist
[j]. p = p-&next)
&&&&&& { k = p-&&& dut= * (p-&indo);
&&&&& &&e = ve [j]l = vl [k] -
&&&&& &&tag = (e= =l) ? ‘*’:’’ ;
&&&&&&& printf
( j,k,dut,e,l,tag ); &&&&&&&&&&&&&&&&/**/
return 1;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
} /*Criticalpath*/
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 8.21第7章 图 自测卷解答_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
第7章 图 自测卷解答
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩5页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢数据结构学习(13)
自学到图的最短路径,找到这个水题一试,奈何无限次worng,让我开始怀疑人生。。。。。找了一天的bug,终于找到,,,因为算的最后的数在比较过程中可能会超出int造成数据出错,。。。。真是醉了。。。。。把int全部改成longlong就ac了,现在代码写的还不是太简洁,以后补充。。。
#include &iostream&
#include &cstdalign&
#include &cstdio&
#define Max 0x7fffffff
struct node
node x[1100];
all[1100];
void Dijkls()
foot[xx-1][xx-1]=1;
all[xx-1]=0;
for (int i=0;i&n;++i)
all[i]=zhi[xx-1][i];
x[i].value=foot[xx-1][i];
for (int i=1;i&n;++i)
weight=Max,minn=xx-1;
for (int j=0;j&n;++j)
if (foot[j][j]==0&&weight&x[j].value)
weight=x[j].
if (minn==xx-1)
foot[minn][minn]=1;
for(int j=0;j&n;++j)
if (foot[j][j]==0&&x[j].value&x[minn].value+foot[minn][j])
x[j].value=x[minn].value+foot[minn][j];
all[j]=all[minn]+zhi[minn][j];
x[j].first=
else if (foot[j][j]==0&&x[j].value==x[minn].value+foot[minn][j]&&
all[j]&all[minn]+zhi[minn][j])//就是这个地方的错误,可能加起来的话超出int,设的Max有点大。。。
all[j]=all[minn]+zhi[minn][j];
x[j].first=
printf(&%lld %lld\n&,x[yy-1].value,all[yy-1]);
int main()
while(scanf(&%lld %lld&,&n,&m))
if (n==0&&m==0)
num1,num2,num3,num4;
for (int i=0;i&n;++i)
for (int j=0;j&n;++j)
foot[i][j]=0;
zhi[i][j]=0;
foot[i][j]=M
zhi[i][j]=M
for (int i=0;i&m;++i)
scanf(&%lld %lld %lld %lld&,&num1,&num2,&num3,&num4);
if ( foot[num1-1][num2-1]&num3)
foot[num1-1][num2-1]=num3;
foot[num2-1][num1-1]=num3;
zhi[num1-1][num2-1]=num4;
zhi[num2-1][num1-1]=num4;
else if (foot[num1-1][num2-1]==num3)
if (zhi[num1-1][num2-1]&num4)
zhi[num1-1][num2-1]=num4;
zhi[num2-1][num1-1]=num4;
scanf(&%lld %lld&,&xx,&yy);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1967次
排名:千里之外
原创:35篇
转载:17篇
(6)(7)(5)(6)(2)(8)(15)(3) 上传我的文档
 下载
 收藏
毕业于医学院校,在医院工作,有相对丰富的护理经验
 下载此文档
正在努力加载中...
作业图参考答案
下载积分:1500
内容提示:作业图参考答案
文档格式:DOC|
浏览次数:4|
上传日期: 21:31:39|
文档星级:
该用户还上传了这些文档
作业图参考答案
官方公共微信

我要回帖

更多关于 标号法求最短路径 的文章

 

随机推荐