Dijkstra
#define int pathmatirx[maxnum];
#define int shortpath[maxnum];
void Djkstra(Mgraph G,int v0,pathmatrix p,shortpath d){
int final[maxnum];
int v;
for (v=0;v<maxnum;v++){
final[v]=0;
p[v]=0;
d[v]=G.matirx[v0][v];
}
d[v0]=0;
final[v0]=1;
for(v=1;v<G.vexnum;v++){
min=inf;
for(w=0;w<G.vexnum;w++){
if (!final[w]&&d[w]<min){
min=d[w];
k=w;
}
}
final[k]=1;
for(w=0;w<G.vexnum;w++){
if(!final[w]&&(min+G.marirx[k][w])<d[w]){
d[w]=min+G.matirx[k][w];
p[w]=k;
}
}
}
}