zoukankan      html  css  js  c++  java
  • LintCode "Route Between Two Nodes in Graph"

    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
  • 相关阅读:
    Jar包管理规范
    Base64编码原理与应用
    MySQL 5.7.14安装说明,解决服务无法启动
    idea注册
    Oracle 如何对中文字段进行排序
    SVN错误:Attempted to lock an already-locked dir
    排序算法
    设计模式
    分层
    阿里云
  • 原文地址:https://www.cnblogs.com/tonix/p/4834087.html
Copyright © 2011-2022 走看看