我正在完成一个课堂实验室,它采用邻接矩阵,并确定顶点之间的连通性。虽然我的代码运行,但它没有给出正确的结果。
我相信我的 while 循环中的第二个 if 语句存在问题。任何帮助是极大的赞赏。代码如下:
#include "graph.h"
#include <assert.h>
using namespace std;
bool Graph::connected(int v,int w) {
int visited[SIZE] ={0};
if (v == w)
return adj_matrix[v][v];
Queue<int> Q;
Q.Enqueue(v);
while (!Q.empty()) {
int curr = Q.Dequeue();
if (curr == w)
return true;
int z=0;
for (int i=0; i<SIZE; i++) {
if (adj_matrix[curr][z]==1 && visited[i]==false) {
Q.Enqueue(z);
visited[i]==true;
}
}
}
return false;
}
这是我收到的输出:
0 0 1 0
0 0 0 0
0 0 0 0
0 0 0 1
vertex 0 is connected to vertices:
vertex 1 is connected to vertices:
vertex 2 is connected to vertices:
vertex 3 is connected to vertices: 3
哪个明显缺少 0 和 2 之间的另一个连接是正确的?