拓扑排序
来源:互联网 发布:海豹突击队淘宝有吗 编辑:程序博客网 时间:2024/05/16 01:51
原理及其Java实现
c++版本
c++版本的dfs
// A C++ program to print topological sorting of a DAG#include<iostream>#include <list>#include <stack>using namespace std;// Class to represent a graphclass Graph{ int V; // No. of vertices' // Pointer to an array containing adjacency listsList list<int> *adj; // A function used by topologicalSort void topologicalSortUtil(int v, bool visited[], stack<int> &Stack);public: Graph(int V); // Constructor // function to add an edge to graph void addEdge(int v, int w); // prints a Topological Sort of the complete graph void topologicalSort();};Graph::Graph(int V){ this->V = V; adj = new list<int>[V];}void Graph::addEdge(int v, int w){ adj[v].push_back(w); // Add w to v’s list.}// A recursive function used by topologicalSortvoid Graph::topologicalSortUtil(int v, bool visited[], stack<int> &Stack){ // Mark the current node as visited. visited[v] = true; // Recur for all the vertices adjacent to this vertex list<int>::iterator i; for (i = adj[v].begin(); i != adj[v].end(); ++i) if (!visited[*i]) topologicalSortUtil(*i, visited, Stack); // Push current vertex to stack which stores result Stack.push(v);}// The function to do Topological Sort. It uses recursive // topologicalSortUtil()void Graph::topologicalSort(){ stack<int> Stack; // Mark all the vertices as not visited bool *visited = new bool[V]; for (int i = 0; i < V; i++) visited[i] = false; // Call the recursive helper function to store Topological // Sort starting from all vertices one by one for (int i = 0; i < V; i++) if (visited[i] == false) topologicalSortUtil(i, visited, Stack); // Print contents of stack while (Stack.empty() == false) { cout << Stack.top() << " "; Stack.pop(); }}// Driver program to test above functionsint main(){ // Create a graph given in the above diagram Graph g(6); g.addEdge(5, 2); g.addEdge(5, 0); g.addEdge(4, 0); g.addEdge(4, 1); g.addEdge(2, 3); g.addEdge(3, 1); cout << "Following is a Topological Sort of the given graph n"; g.topologicalSort(); return 0;}
阅读全文
0 0
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 【拓扑排序】
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- hdu2022(water~~)海选女主角
- hdu2023 求平均成绩 ~~很闲~~~
- hdu2024C语言合法标识符
- hdu2025查找最大元素
- Android6.0 很详细的电源管理分析
- 拓扑排序
- zend studio10破解
- npm install --save 和 --save-dev的区别
- PHP Simple HTML DOM解析器
- 【java 菜鸟实践<一>】实现PIO excel更新某个单元格数据(支持excel2003和2007)
- 今天来做一个PHP电影小爬虫。
- PHP电影小爬虫(2)
- 基于Dragonboard 410c的camera调试之Android L上的调试
- hdu2026(water~~)