要求:要能输出图形的最短路径设计,用C语言编写,高手进!!! 100

题目:路径设计问题要求:已知若干个城市的地图,如图所示,求从沈阳到广州的路径,要求路径中经过的城市最少,画出如图所示的路径网络图,然后动态显示所选择的路径。... 题目:路径设计问题
要求:已知若干个城市的地图,如图所示,求从沈阳到广州的路径,要求路径中经过的城市最少,画出如图所示的路径网络图,然后动态显示所选择的路径。
展开
 我来答
日徒谷2c
2009-06-13 · TA获得超过311个赞
知道答主
回答量:62
采纳率:0%
帮助的人:65.9万
展开全部
这个是我以前参加省赛的时候写的,一直保存着的,应该是你这个问题的答案,语法上没有问题,因为以前我跑过的,这个是C++程序,不过C和C++在基础语法上没有任何区别的,在这里拿出来跟你分享,希望能得到你的分哦!呵呵!

/***********************************************
设G=(V,E)是一个每条边都有非负长度的有向图,有一个特异的顶点s称为缘。
单源最短路径问题,或者称为最短路径问题,是要确定从s到V中没一个其他
顶点的距离,这里从顶点s到x的距离定义为从s到x的最短路径问题。这个问题
可以用Dijkstra算法解决。下面我给了c++下的源代码!
************************************************/
#include<iostream.h>
void main()
{
int infinity=100,j,i,n,k,t,**w,*s,*p,*d;
cout<<"input the value of n:";
cin>>n;
cout<<endl;

d=new int[n];
s=new int[n];
p=new int[n];
w=new int*[n];
for(i=0;i<n;i++) {w[i]=new int[n];}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>w[i][j];

for(s[0]=1,i=1;i<n;i++)
{
s[i]=0;d[i]=w[0][i];
if(d[i]<infinity) p[i]=0;
else p[i]=-1;
}

for(i=1;i<n;i++)
{
t=infinity;k=1;
for(j=1;j<n;j++)
if((!s[j])&&(d[j]<t)) {t=d[j];k=j;}
s[k]=1;//point k join the S
for (j=1;j<n;j++)
if((!s[j])&&(d[j]>d[k]+w[k][j]))
{d[j]=d[k]+w[k][j];p[j]=k;}

}
cout<<"从源点到其它顶点的最短距离依次如下:";
for(i=1;i<n;i++) cout<<d[i]<<" ";

}

/*********
顶点个数用n表示,这里给出的例子n=6
100 1 12 100 100 100
100 100 9 3 100 100
100 100 100 100 5 100
100 100 4 100 13 15
100 100 100 100 100 4
100 100 100 100 100 100
*****************************/
匿名用户
2009-06-21
展开全部
我看热闹!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式