图中两个点之间的路线 -LintCode

来源:互联网 发布:打豆豆小游戏优化版 编辑:程序博客网 时间:2024/05/18 02:28

给出一张有向图,设计一个算法判断两个点 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;    }};
原创粉丝点击