你能不能帮我解决这个问题(我从github那里得到了它,因为它很清楚并遵循我所做的相同逻辑,也是同样的问题,我刚刚添加了一些像前辈这样的细节我和#我用)?
嗯,我尝试了很多次但是我无法弄清楚问题,我不明白为什么我的bfs算法(和这个)在无向和加权图中的距离错误
考虑我的图表是使用矩阵,但是当我使用bfs从b行进到c时,例如,我得到5而不仅仅是2作为成本...而a到b我得到2,什么是正确的答案。
a b c d
a | 0 2 0 0 b | 2 0 0 3 c | 0 0 0 0 d | 0 3 0 0
以下是代码:
const int branco = 0;
const int cinza = 1;
const int preto = 2;
int bfs(int start, int target) {
int color[countVertices];
queue<int> fila;
dist = 0;
predecessors.clear();
for (int i = 0; i < countVertices; i++) {
color[i] = white;
}
color[start] = grey;
fila.push(start);
while (!fila.empty()) {
int u = fila.front();
fila.pop();
if (u == target) return 1;
for (int v = 0; v < countVertices; v++) {
if (matriz[u][v] != 0 && color[v] == white) {
color[v] = grey;
fila.push(v);
dist += matriz[u][v]; // sum weight
predecessors.push_front(u); // predecessor
}
}
color[u] = black;
}
return 0;
}