题目
原文:
Given a directed graph, design an algorithm to find out whether there is a route between two nodes.
译文:
给一个有向图,设计一个算法去找出两个结点间是否有路径.
解答
给定一个有向图和终点起点,从起点开始遍历,进行BFS或者DFS,看是不是可以到达终点即可。
代码如下:
import java.util.*;
class Q4_2{
public static boolean isConnected(int v1,int v2,boolean[][] edges,boolean[] visited){
Queue<Integer> queue = new LinkedList<Integer>();
queue.add(v1);
visited[v1]=true;
while(!queue.isEmpty()){
int t = queue.poll();
if(t==v2) return true;
for(int i=0;i<edges.length;i++){
if(edges[v1][i]&&!visited[i]){
queue.add(i);
visited[i]=true;
}
}
}
return false;
}
public static void main(String[] args) {
boolean[][] edges = {{false,false,true,false,false},
{true,false,false,false,false},
{false,false,false,false,true},
{false,true,false,false,false},
{false,false,false,true,false}};
boolean[] visited = {false,false,false,false,false,false};
System.out.println(isConnected(0,3,edges,visited));
}
}
---EOF---