题目链接:点击打开链接
题目大意:略。
解题思路:为何此题不需要更新最小值呢?因为是有向图,而且默认相邻两点路径一定为1,那么如图中的 6->5 和 4->5 可以看出来,一定是先加入队列的,一定是最小的结果了,所以不需要再判断更新最小值。
AC 代码
void ShortestDist(LGraph Graph, int dist[], Vertex S)
{
int front=0, rear=0;
PtrToAdjVNode p=NULL;
Vertex *que=(Vertex*)malloc(MaxVertexNum*sizeof(Vertex));
for(int i=0;i<MaxVertexNum;i++)
que[i]=dist[i]=-1;
dist[S]=0;
que[0]=S;
while(front<=rear)
{
Vertex s=que[front];
p=Graph->G[s].FirstEdge;
while(p)
{
Vertex v=p->AdjV;
if(dist[v]==-1)
{
dist[v]=1+dist[s];
que[++rear]=v;
}
p=p->Next;
}
front++;
}
}