论文网
English Papers
万事OK网
发表论文
 
 首页 > IT文章 > 程序设计 >
单源最短路径bellman-ford算法

[科技论文网] http://www.scipapers.com    2007-12-01  

    单源最短路径bellman-ford算法

    求的是arc数组中存储的第一个顶点到其他顶点的最短路径,结果存在dis数组中。

    #i nclude <stdio.h>
    #i nclude <malloc.h>

    #define MAX 100
    #define MAXNUM 10000000

    typedef struct graphnode
    {
     int vexnum;
     int arcnum;
     int gra[MAX][MAX];
    }Graph;

    int dis[MAX];
    int arc[MAX][MAX];

    void bellman(Graph *g);

    int main()
    {
     int i,j;
     Graph *G;
     G=(Graph *)malloc(sizeof(Graph));
     printf("vexnum:\n");
     scanf("%d",&G->vexnum);
     printf("arcnum:\n");
     scanf("%d",&G->arcnum);
     printf("graph:\n");
     for(i=0;i<G->vexnum;i++)
      for(j=0;j<G->vexnum;j++)
       scanf("%d",&G->gra[i][j]);
     for(i=0;i<G->arcnum;i++)
     {
      printf("the %dth arc:\n");
      scanf("%d%d",&arc[i][0],&arc[i][1]);
     }
     bellman(G);
     return 0;
    }


    void bellman(Graph *G)
    {
     int i,j;
     bool sign;
     for(i=0;i<G->vexnum;i++)
      dis[i]=MAXNUM;
     dis[1]=0;
     sign=true;
     for(i=1;i<G->vexnum;i++)
     {
      sign=false;
      for(j=0;j<G->arcnum;j++)
      {
       if(dis[arc[j][0]]<MAXNUM && dis[arc[j][1]]>dis[arc[j][0]]+G->gra[arc[j][0]][arc[j][1]])
       {
        dis[arc[j][1]]=dis[arc[j][0]]+G->gra[arc[j][0]][arc[j][1]];
        sign=true;
       }
      }
     }
     return;
    }

        来源:

声明:本文由网友推荐或作者提交,版权归原作者所有,刊登此文仅为传播知识,展示研究成果,提高文章引用率。未经原作者授权,禁止用于任何形式的商业行为。科技论文网倡导尊重知识、尊重劳动、保护原创、知识共享。由于部分论文文章来于网络,文章作者不祥,请相关的原创作者与我们联系,以便加上您的署名。

  
单源最短路径bellman-ford算法
下面没有链接了     前序遍历二叉树
最新论文
·[程序设计]单源最短路径bellman-ford算法
·[程序设计]前序遍历二叉树
·[程序设计]哈夫曼树的构造方法与原理
·[程序设计]排列组合算法
·[程序设计]走迷宫程序
·[程序设计]红黑树分析和实现
·[程序设计]最小堆/哈希表/二叉树/平衡二叉树/红黑树
·[程序设计]模式匹配的KMP算法
·[程序设计]汉诺塔源码
·[程序设计]寻找链表中间节点算法
 
 

搜索论文

Google
论文分类

论文网 论文发表网 论文 免费论文网 找论文网 毕业论文 中国论文网 英语论文 百度论文 聘教网 易搜
 免费发布论文    中国论文网 2008版权所有  业务联系:pinjiao@126.com