[computer networks experiments]router algorithms---dijkstra

source file:

#include <iostream.h>
#define M  100
#define n  7              //定义成7是为了看起来方便,这样就可以用a[6]来表示第六个点

int min(int a,int b)
{
 int c;
 if(a>b) c=b;
 else c=a;
 return c;
}

void main()
{
 int i,j,k;
 //initial(N);
 int N[n];
 N[1]=1;       //等于1就表示节点1在集合N中;N[i]=1表示i点在集合N中
 //initial(L);
 int L[n][n]={           //节点距离矩阵
 {0            },
 {0,0,2,5,1,M,M},        //节点1
 {0,2,0,3,2,M,M},
 {0,5,3,0,3,1,5},
 {0,1,2,3,0,1,4},        //节点4
 {0,M,M,1,1,0,2},
 {0,M,M,5,4,2,0}
 };                    //节点距离矩阵输入结束
 //initial[S]
 int S[n][n];
 for(i=2;i<n;i++)
 {
  S[1][i]=L[1][i];   
 }
 for(j=2;j<n;j++)
 {
   N[j]=1;           //如果点不在N中,就加入到N中
   for(k=2;k<n;k++)  //修改不在N中的节点的S值
   {
    if(N[k]==1)
     S[j][k]=S[j-1][k];
    else
     S[j][k]=min(S[j-1][k],S[j-1][j]+L[j][k]);
   }
 }
 for(i=1;i<7;i++)
 {
  for(j=2;j<7;j++)
   cout<<S[i][j]<<",";
  cout<<endl;
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值