对于下图,利用最短路径算法,找到从家到学校最短路径长度(能够输出对应路径更好)(C语言)

对于下图,利用最短路径算法,找到从家到学校最短路径长度(能够输出对应路径更好)(C语言)

#include "stdio.h"
using namespace std;
struct OP {
int next[10001], num = 0; // 记入它接下来抵达的地方,num 为个数
}op[10001]; // 表示点个数,0为出发地,10000为目的地
int f[10001],key[10001],k_len=50000;
void find_MinRoad(int now,int num){ // 当前位置,当前走的步数
if(now==10000){
if(num<k_len) for(k_len=0;k_len<num;k_len++) key[k_len] = f[k_len];
}
if(now!=10000){
for(int z=0;z<op[now].num;z++) {
f[num] = op[now].next[z];
find_MinRoad(op[now].next[z],num+1);
}
}
}
int main()
{
int road,a,b; // road : 输入中间路的总个数,你的图为13,如果更多点把int 换成long op那的数组也再开大点
scanf("%d",&road);
while (road--){
scanf("%d %d",&a,&b); // a->b
op[a].next[op[a].num++] = b;
}
find_MinRoad(0,1);
printf("%d\n",k_len-1);
for(int z=0;z<k_len;z++) printf("%d ",key[z]);
return 0;
}