LintCode_拓扑排序_BFS实现
来源:互联网 发布:淘宝信誉多少一个皇冠 编辑:程序博客网 时间:2024/06/03 13:57
上一篇的文章是用DFS解决的,但如果遇到大规模图的时候会容易引起栈溢出,所以采用不涉及递归的BFS是个不错的选择。
#include <algorithm>using namespace std;/** * Definition for Directed graph. * struct DirectedGraphNode { * int label; * vector<DirectedGraphNode *> neighbors; * DirectedGraphNode(int x) : label(x) {}; * }; */const int MAX=99999;class Solution {public: /** * @param graph: A list of Directed graph node * @return: Any topological order for the given graph. */ bool Visited[MAX]; //标记是否被加入 int inque[MAX]; //入度 queue<DirectedGraphNode*> temp; //辅助用的队列 vector<DirectedGraphNode*> result; void bfs(DirectedGraphNode* r) //广度优先搜索法,参数r是入度为0的结点 { DirectedGraphNode* s; temp.push(r); Visited[r->label]=true; while(!temp.empty()) { s=temp.front(); temp.pop(); result.push_back(s); //将入度为0的点的label加入vector //遍历邻居 for(int i=0;i<s->neighbors.size();i++) { inque[s->neighbors[i]->label]--; if(inque[s->neighbors[i]->label]==0&&Visited[s->neighbors[i]->label]==false) { Visited[s->neighbors[i]->label]=true; temp.push(s->neighbors[i]); } } } } vector<DirectedGraphNode*> topSort(vector<DirectedGraphNode*> graph) { for(int i=0;i<graph.size();i++) //初始化数据 { inque[graph[i]->label]=0; Visited[graph[i]->label]=false; } for(int i=0;i<graph.size();i++) //统计每个节点的入度 for(int j=0;j<graph[i]->neighbors.size();j++) inque[graph[i]->neighbors[j]->label]++; for(int i=0;i<graph.size();i++) { if(inque[graph[i]->label]==0&&Visited[graph[i]->label]==false) bfs(graph[i]); } return result; }};
阅读全文
1 0
- LintCode_拓扑排序_BFS实现
- LintCode_拓扑排序_DFS实现
- lintcode_整数排序 II
- 拓扑排序 C++实现
- 拓扑排序 C++实现
- 拓扑排序 C实现
- 拓扑排序代码实现
- 拓扑排序实现
- 拓扑排序 C++实现
- 拓扑排序c++实现
- JAVA实现拓扑排序
- 拓扑排序C++实现
- 拓扑排序 JAVA实现
- 拓扑排序算法实现
- javascript实现拓扑排序
- 拓扑排序-简单实现
- 拓扑排序算法(C++实现)
- 拓扑排序算法(C++实现)
- Spring中@Bean与@Configuration
- 游戏引擎概念----快速了解
- hashmap在初始化的时候直接赋值的方法
- 信息学蒟蒻域ACM模拟赛题解
- 测试ip是否可用(ip代理时)
- LintCode_拓扑排序_BFS实现
- Find the nondecreasing subsequences--(树状数组)
- 我对C++的前景看法 C++和C#的对比
- 获取数据库连接失败解决方案
- C++类和对象知识点整理二
- 字符串反转--句子反转和单词反转
- Column count doesn't match value count at row 1 问题Column count doesn't match value count at row 1
- hdoj 6154 CaoHaha's staff
- Mac 开启任何来源选项