gpt4 book ai didi

java - 如何检查Graph是否已连接

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:44:14 25 4
gpt4 key购买 nike

我有一个无向图,想知道一个节点是否连接到另一个节点?

例如

0 1 0
1 0 1
0 1 0

在此节点 1 连接到节点 3(因为存在从 1 到 2 和 2 到 3 的路径,因此 1-3 是连接的)

我已经编写了使用 DFS 的程序,但我无法弄清楚为什么会给出错误的结果。

我不想保留任何全局变量并希望我的方法返回真实的 id 节点使用递归程序连接

public static boolean isConnectedGraph(int[][] graph, int start, int end,
int visited[]) {
visited[start] = 1;
if (graph[start][end] == 1) {
System.out.println("Yes connected....");
return true;
}
for (int i = 0; i < graph[0].length; i++) {
if (graph[start][i] == 1 && visited[i] == 0) {
visited[i] =1;
isConnectedGraph(graph, i, end, visited);

}
}
return false;
}

最佳答案

您不对递归调用 isConnectedGraph(graph, i, end, visited); 的结果做任何事情。您应该将它分配给一个变量,如果它是 true - 返回 true

将主循环更改为:

for (int i = 0; i < graph[0].length; i++) {
if (graph[start][i] == 1 && visited[i] == 0) {
visited[i] =1;
if (isConnectedGraph(graph, i, end, visited)) return true;

}
}

关于java - 如何检查Graph是否已连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30140030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com