linux學習總結(最短路徑dijkstra演算法)

來源:互聯網
上載者:User
#include <stdio.h>#define N 6#define M 1<<10typedef struct {int pi[N];int end;}pathtype;int main(){    int array[N][N] ={                    //       v0 v1  v2  v3  v4  v5                /*v0*/       { 0, 20, 15,  M,  M,  M},                /*v1*/       { 2,  0,  4,  M, 10, 30},                /*v2*/       { M,  M,  0,  M,  M, 10},                /*v3*/       { M,  M,  M,  0,  M,  M},                /*v4*/       { M,  M,  M, 15,  0, 10},                /*v5*/       { M,  M,  M,  4,  M,  0}                    };    int i,j,count = 0,s[N] = {0},dist[N];    pathtype path[N];    int min;    s[0] = 1;    for(i = 0 ;i< N;i++)    {        dist[i] = array[0][i];        path[i].pi[0] = 0;        path[i].end = 0;    }    while(count < N-1)    {    for(i = 0 ; i < N; i++)    {        if(s[i] == 0 && dist[i] < M)        {            min = i;        }    }    s[min] = 1;    path[min].end++;    path[min].pi[path[min].end] = min;    for(i = 0 ; i < N; i++)    {        if((s[i]==0 )&&(dist[i] > (dist[min]+array[min][i])))                    {            dist[i] = dist[min] + array[min][i];            path[i] = path[min];        }    }    count++;    }    for(i = 0;i< N;i++)    {        printf("V0 -> V%d :%d\n",i,dist[i]);        for(j = 0;j<=path[i].end;j++)        {            printf(" path = %d ",path[i].pi[j]);        }        printf("\n");    }    return 0;}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.