LintCode-圖中兩個點之間的路線
阿新 • • 發佈:2019-02-01
給出一張有向圖,設計一個演算法判斷兩個點 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; } };