
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 }
