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

来源:互联网 发布:时时彩二星组选软件 编辑:程序博客网 时间:2024/05/18 03:47

给出一张有向图,设计一个算法判断两个点 s 与 t 之间是否存在路线。

样例

如下图:

A----->B----->C \     |  \    |   \   |    \  v     ->D----->E

for s = B and t = E, return true

for s = D and t = C, return false

分析:直接BFS()即可

代码:

/** * 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*> q;        map<DirectedGraphNode*,bool> visited;        q.push(s);        visited[s]=true;        while(!q.empty())        {            DirectedGraphNode* cur = q.front();            q.pop();            if(cur==t)                return true;            for(auto neighbour:cur->neighbors)            {                if(!visited[neighbour])                {                    q.push(neighbour);                    visited[neighbour]=true;                }            }        }        return false;    }};


0 0