首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

dijkstra

2012-06-09 
dijkstra求助啊#includestdio.h#includestring.h#define FI 100000int final[100]int g[100][100]in

dijkstra 求助啊
#include<stdio.h>
#include<string.h>
#define FI 100000
int final[100];
int g[100][100];
int d[100];
int n,m;
int start,end;
void dijkstra()
{

  int i,w,v,min,a;
  memset(final,0,sizeof(final));
  for(i=0;i<n;i++)
d[i]=g[start][i];
  final[start]=1;
d[i]=0;
for(v=0;v<n;v++)//什么意思
{
min=FI;
for(w=0;w<n;w++)
if(!final[w]&&d[w]<min)//的【v】是上面for中的d【】吗
{
a=w;
min=d[w];
}
final[a]=1;
for(w=0;w<n;w++)
if(!final[a]&&d[a]+g[a][w]<d[w])//还有这个d
d[w]=d[a]+g[a][w];
}
if(d[end]<FI)
printf("%d",d[end]);
else
printf("-1");
}
int main()
{

  int i,j,x,y,z;
  while(scanf("%d%d",&n,&m)!=EOF)
  {
  for(i=0;i<n;i++)
for(j=0;j<n;j++)
g[i][j]=FI;
for(i=0;i<m;i++)
scanf("%d%d%d",&x,&y,&z);
g[x][y]=g[y][x]=z;
scanf("%d%d",&start,&end);
dijkstra();
  }
  return 0;
}

[解决办法]
从另外一个集合里找到一个离当前集合里最近的点。

热点排行