lintcode-拓扑排序-127
来源:互联网 发布:淘宝网怎么注册用户 编辑:程序博客网 时间:2024/06/06 02:01
给定一个有向图,图节点的拓扑排序被定义为:
- 对于每条有向边A--> B,则A必须排在B之前
- 拓扑排序的第一个节点可以是任何在图中没有其他节点指向它的节点
/** * Definition for Directed graph. * struct DirectedGraphNode { * int label; * vector<DirectedGraphNode *> neighbors; * DirectedGraphNode(int x) : label(x) {}; * }; */class Solution {public: vector<DirectedGraphNode*> topSort(vector<DirectedGraphNode*> graph) { vector<DirectedGraphNode*> ret; if(graph.empty()) return ret; map<DirectedGraphNode*,int> in; //in为入度 stack<DirectedGraphNode*> s; //保存入度为零的节点 for(auto e:graph){ for(auto i:e->neighbors) ++in[i]; //记录每个节点的入度 } for(auto e:graph) if(0==in[e]) s.push(e); //入度为零的节点入栈 while(!s.empty()){ //BFS遍历,搜寻入度为零的节点 DirectedGraphNode* cur=s.top(); s.pop(); //当前节点出栈时,它的相邻节点入度都减一 ret.push_back(cur); for(auto e:cur->neighbors){ if(--in[e]==0) //减一后为零则入栈 s.push(e); } } return ret; }};
0 0
- lintcode-拓扑排序-127
- LintCode 127-拓扑排序
- lintcode(127)拓扑排序
- LintCode-拓扑排序
- 拓扑排序-LintCode
- Lintcode 拓扑排序
- LintCode 解题记录 17.10.14 拓扑排序
- Lintcode:拓扑排序(深度优先搜索,广度优先搜索)
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- JavaSE基础 Item -- 抽象类Abstract
- 自定义DevExpress GridView Group时显示项目详细信息
- 刚体运动研究方法——欧拉角四元数
- 欢迎使用CSDN-markdown编辑器
- 开篇第一话
- lintcode-拓扑排序-127
- 进程与线程
- 杨辉三角
- 关于MVC的自我理解
- Java项目打包发布
- RSA算法中利用欧几里得算法求d详细过程
- 无题
- 黑马程序员_java学习笔记 12. 反射机制
- OA and Ding