void ShortestDist( LGraph Graph, int dist[], Vertex S ){
for(int i=0;i<Graph->Nv;i++){
dist[i]=-1;
}
int vis[MaxVertexNum]={0};
PtrToAdjVNode p;
vis[S]=1;
// printf("%d ",S);
dist[S]=0;
int queue[MaxVertexNum]={0},front=0,rear=-1;
queue[++rear]=S;
while(front<=rear){
int v=queue[front++];
p=Graph->G[v].FirstEdge;
while(p){
S=p->AdjV;
if(vis[S]==0){
vis[S]=1;
// printf("%d ",S);
dist[S]=dist[v]+1;
queue[++rear]=S;
}
p=p->Next;
}
}
// printf("\n");
}