您的位置:首页 > Web前端 > Node.js

LintCode "Route Between Two Nodes in Graph"

2015-09-24 05:14 676 查看
DFS ended up with TLE. Only BFS works.

/**
* 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 bfs(DirectedGraphNode*s, DirectedGraphNode* t)
{
unordered_set<DirectedGraphNode*> visited;

queue<DirectedGraphNode*> q;
q.push(s);
while(!q.empty())
{
auto pt = q.front(); q.pop();
if(pt->label == t->label) return true;
visited.insert(pt);

for(auto c : pt->neighbors)
{
if(visited.find(c) == visited.end())
q.push(c);
}
}
return false;
}

bool hasRoute(vector<DirectedGraphNode*> graph,
DirectedGraphNode* s, DirectedGraphNode* t) {

unordered_set<DirectedGraphNode*> visiteds;
visiteds.insert(s);
bool b1 = bfs(s, t);
if(b1) return true;

visiteds.clear();
visiteds.insert(t);
return bfs(s, t);
}
};


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: