【发布时间】:2019-05-26 17:04:05
【问题描述】:
我刚开始学习图表并陷入了这个问题。 我试图找到图的两个顶点之间的最短路径(最小边数),条件是在路径的每 2 个中间顶点之间有 2 条替代路径(不计算长度)。
这是我的 BFS 算法。 颜色表示:
白色 = 尚未达到
灰色 = 到达的顶点将保持该颜色,直到其所有邻居都无法到达
黑色 = 到达顶点
pi[] 包含当前顶点的父节点
void bfs(int s)
{
int i;
for (i=1; i<=v; i++)
{
if (i != s)
{
color[i] = WHITE;
d[i] = INFTY;
pi[i] = NIL;
}
}
color[s] = GRAY;
d[s] = 0;
pi[s] = NIL;
queueInit(&q);
queuePush(&q,s);
while (!queueEmpty(&q))
{
int u = queueFront(&q);
int j;
for (j=1; j<=adj[u][0]; j++)
{
int x = adj[u][j];
if (color[x] == WHITE)
{
color[x] = GRAY;
d[x] = d[u]+1;
pi[x] = u;
queuePush(&q,x);
}
}
queuePop(&q);
color[u] = BLACK;
}
}
请帮我改变算法以找到给定条件下的最短路径,或者至少给我一个建议!
【问题讨论】:
标签: c graph shortest-path breadth-first-search