Dijstra算法C语言实现

  • k8_379668
    了解作者
  • 213KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-29 05:30
    上传日期
最短路径算法,Dijstra,c语言实现
DijstraTest1.rar
  • DijstraTest1
  • Debug
  • vc60.pdb
    60KB
  • DijstraTest1.pch
    235.8KB
  • DijstraTest1.exe
    188.1KB
  • vc60.idb
    41KB
  • DijstraTest1.pdb
    497KB
  • DijstraTest1.obj
    7.1KB
  • DijstraTest1.ilk
    232.3KB
  • DijstraTest1.opt
    52.5KB
  • DijstraTest1.plg
    0B
  • DijstraTest1.dsp
    4.3KB
  • DijstraTest1.dsw
    549B
  • DijstraTest1.ncb
    33KB
  • DijstraTest1.cpp
    1020B
内容介绍
#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 具体例子见 电子工业出版社 《算法设计技巧与分析》148页 ************/
评论
    相关推荐