给出一张有向图,设计一个算法判断两个点 s 与 t 之间是否存在路线。
样例
如下图:
for s = B and t = E, return true
for s = D and t = C, return false
/**
* Definition for Directed graph.
* struct DirectedGraphNode {
* int label;
* vector<DirectedGraphNode *> neighbors;
* DirectedGraphNode(int x) : label(x) {};
* };
*/
class Solution {
public:
/**
* @param graph: A list of Directed graph node
* @param s: the starting Directed graph node
* @param t: the terminal Directed graph node
* @return: a boolean value
*/
bool hasRoute(vector<DirectedGraphNode*> graph,
DirectedGraphNode* s, DirectedGraphNode* t) {
// write your code here
queue<DirectedGraphNode*> que;
map<DirectedGraphNode*, bool> visited;
que.push(s);
visited[s]=true;
while (!que.empty())
{
DirectedGraphNode* node = que.front();
que.pop();
if (node == t)
return true;
for (auto c : node->neighbors)
{
if (!visited[c])
{
que.push(c);
visited[c] = true;
}
}
}
return false;
}
};