拓扑排序-LintCode
来源:互联网 发布:淘宝优惠券在哪里查看 编辑:程序博客网 时间:2024/06/05 05:04
给定一个有向图,图节点的拓扑排序被定义为:
对于每条有向边A–> B,则A必须排在B之前
拓扑排序的第一个节点可以是任何在图中没有其他节点指向它的节点
找到给定图的任一拓扑排序
样例
对于下列图:
这个图的拓扑排序可能是:
[0, 1, 2, 3, 4, 5]
或者
[0, 2, 3, 1, 5, 4]
或者
……
/** * 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 * @return: Any topological order for the given graph. */ vector<DirectedGraphNode*> topSort(vector<DirectedGraphNode*> graph) { // write your code here vector<DirectedGraphNode*> v; map<DirectedGraphNode*,int> m; queue<DirectedGraphNode*> q; if(graph.empty()) return v; for(auto c:graph) for(auto t:c->neighbors) { ++m[t]; } for(auto t:graph) if(m[t]==0) q.push(t); while(!q.empty()) { DirectedGraphNode *cur=q.front(); q.pop(); v.push_back(cur); for(auto t:cur->neighbors) { if(--m[t]==0) q.push(t); } } return v; }};
阅读全文
0 0
- lintcode-拓扑排序-127
- LintCode-拓扑排序
- LintCode 127-拓扑排序
- lintcode(127)拓扑排序
- 拓扑排序-LintCode
- Lintcode 拓扑排序
- LintCode 解题记录 17.10.14 拓扑排序
- Lintcode:拓扑排序(深度优先搜索,广度优先搜索)
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- Android初步之控件与布局
- redis集群——增加节点
- 大数据分布式集群搭建(3)
- angular中controller、directive等为什么要用function包起来
- Leetcode刷题五遍还没offer
- 拓扑排序-LintCode
- HDU 5933 ArcSoft's Office Rearrangement(构造题)
- Java IO流_2
- 友盟埋点统计之点击事件
- 画出轮廓drawContours
- 控制MapReduce输出文件个数及格式
- redis集群——删除节点
- 【HDU1852】Beijing 2008
- leetcode[Find All Anagrams in a String]