BFS在无向图中占用两倍的距离

时间:2016-06-23 22:34:33

标签: c++ graph breadth-first-search

你能不能帮我解决这个问题(我从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;

}

0 个答案:

没有答案