void ShortestDist( MGraph Graph, int dist[], int count[], Vertex S ){
int vis[MaxVertexNum]={0},n=Graph->Nv;
for(int i=0;i<n;i++){
dist[i]=Graph->G[S][i];
count[i]=0;
}
dist[S]=0;
count[S]=1;
for(int i=1;i<n;i++){
int min=INFINITY,v=-1;
for(int j=0;j<n;j++){
if(vis[j]==0&&dist[j]<min){
v=j;
min=dist[j];
}
}
if(v==-1)
continue;
vis[v]=1;
for(int j=0;j<n;j++){
if(vis[j]==0&&dist[v]+Graph->G[v][j]<dist[j]){
dist[j]=dist[v]+Graph->G[v][j];
count[j]=count[v];
}
else if(vis[j]==0&&dist[j]==dist[v]+Graph->G[v][j]){
count[j]+=count[v];
}
}
}
for(int i=0;i<n;i++){
if(dist[i]==INFINITY){
dist[i]=-1;
count[i]=0;
}
}
}