单源最短路问题,有n个顶点,m条路径,求某一顶点称作源点到其他顶点的最短距离.
代码实现
```c
#include<stdio.h>
int main()
{
int n,m,inf=99999,q1,q2,x;
scanf("%d %d",&n,&m);
int a[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i==j){
a[i][j]=0;
}else{
a[i][j]=inf;
}
}
}
for(int i=0;i<m;i++){
scanf("%d %d %d",&q1,&q2,&x);
a[q1][q2]=x;
}
int b[n],p;
for(int i=0;i<n;i++){
b[i]=a[0][i];
}
int book[10]={0};
for(int i=0;i<n-1;i++){
int min=inf;
for(int j=1;j<n;j++){
if(b[j]<min&&book[j]==0){
min=b[j];
p=j;
}
}
book[p]=1;
for(int j=1;j<n;j++){
if(b[j]>b[p]+a[p][j]){
b[j]=b[p]+a[p][j];
}
}
}for(int i=0;i<n;i++){
printf("%d ",b[i]);
}
return 0;
}
6 9
0 1 1
0 2 12
1 2 9
1 3 3
2 4 5
3 2 4
3 4 13
3 5 15
4 5 4 ~测试用例
结果