我通过应用bfs / dfs调查了这两个节点之间的所有可能路径。虽然我得到了正确的结果但是花了太多时间。 我该怎么办?
这是我的BFS实施的Java代码 -
这里s =源顶点或第一个顶点;
d =目的地或第二个顶点;
b =要避免的特殊要点。
boolean BFS(int s, int d, int b)
{
boolean visited[] = new boolean[V];
LinkedList<Integer> queue = new LinkedList<Integer>();
visited[s]=true;
queue.add(s);
if(s==b)
return false;
upper:
while (queue.size() != 0)
{
s = queue.poll();
if(s==b)
continue upper;
if(s==d)
return true;
Iterator<Integer> i = adj[s].listIterator();
while (i.hasNext())
{
int n = i.next();
if (!visited[n])
{
visited[n] = true;
queue.add(n);
}
}
}
return false;
}
如果有这样的路径则返回true,如果没有这样的路径则返回false。