dijkstra

 1 #include<stdio.h>
 2 #define SIZE 6
 3 #define MAX 1000
 4 const int matrix[SIZE][SIZE]={
 5 0,      MAX,    10,     MAX,    30,     100,
 6 MAX,    0,      5,      MAX,    MAX,    MAX,
 7 10,     5,      0,      50,     MAX,    MAX,
 8 MAX,    MAX,    50,     0,      20,     10,
 9 30,     MAX,    MAX,    20,     0,      60,
10 100,    MAX,    MAX,    10,     60,     0,
11 };
12 int main()
13 {
14 int distance[]={0,MAX,MAX,MAX,MAX,MAX};
15 int mark[SIZE]={0};
16 int source;
17 for(int j=0;j<SIZE;j++)
18 {
19 int min=MAX;
20 for(int i=0;i<SIZE;i++)
21     if(mark[i]==0&&distance[i]<min)
22         {
23             min=distance[i];
24             mark[i]=1;
25             source=i;
26         }
27 for(int i=0;i<SIZE;i++)
28     if(mark[i]==0&&distance[i]>min+matrix[source][i])
29         distance[i]=min+matrix[source][i];
30 }
31 for(int i=0;i<SIZE ;i++)
32     printf("%d ",distance[i]);
33 }

posted @ 2016-04-12 12:24  IsaacYoung  阅读(121)  评论(0)    收藏  举报