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
  • 相关阅读:
    排序算法---堆排序

    排序算法---希尔排序
    简单排序算法
    Jave 垃圾回收查看工具--jstat
    Linux 查看进程IO状态
    vittualenv 和mkvirtualenv
    服务器被当作了肉机去挖矿的解决办法
    pycharm的函数注释 和 父子组件传递
    git初始化操作
  • 原文地址:https://www.cnblogs.com/tonix/p/4834087.html
Copyright © 2011-2022 走看看