当前位置:网站首页>[graph theory] topological sorting
[graph theory] topological sorting
2022-07-04 22:58:00 【Which bug are you?】
List of articles
The concept of topological sorting will not be repeated .
The method of topological sorting
These structures are mainly maintained in the diagram describing topological sorting , The adjacency table is responsible for describing the relationship between points and edges .
Topological sorting operation
Code implementation
A topological sort (Topological Sorting)_ Shenyi's blog -CSDN Blog _ A topological sort
I followed his introduction to the code
subject
2367 – Genealogical tree (poj.org)
The template questions , Build a graph , Then sort the output .
oj I won't support it C++11, You have to auto Replace with iterators …
#include <iostream>
#include <list>
#include <queue>
#include <vector>
using namespace std;
#define N 1000
queue<int>output;
class Graph
{
public:
Graph(int v)// Initialize the number of vertices ,new Adjacency list , Initialize the in degree set to 0
{
_v = v;
_adj = new list<int>[v];//new One has v Adjacency table of vertices
_indegree.resize(v, 0);// Initialize the in degree set
}
~Graph()
{
delete[] _adj;
}
void addEdge(int val, int w)// The value is val Point of w
{
_adj[val].push_back(w);
_indegree[w]++;
}
bool topological_sort()
{
for (int i=1;i<_indegree.size();i++)// In fact, there is a layer of mapping at the join node
{
if (!_indegree[i])
{
_q.push(i);
}
}
int count = 0;
while (!_q.empty())
{
int v = _q.front();
_q.pop();
output.push(v);
count++;
// Update the in degree set , Set your entry as 0 The point of joining the team
list<int>::iterator it = _adj[v].begin();
for (;it!=_adj[v].end();it++)
{
_indegree[*it]--;
if (!_indegree[*it])
{
_q.push(*it);
}
}
}
if (count<_v)// Graph with loop
{
return false;
}
else
{
return true;
}
}
private:
int _v;// Number of vertices
list<int>* _adj;// Adjacency list
queue<int>_q;// The maintenance degree is 0 The set of vertices of
vector<int> _indegree;// Record the depth of each vertex
};
int main()
{
int n;
cin >> n;
Graph g(n+1);
for (int i = 1; i <= n; i++)
{
int x;
while (cin >> x)
{
if (x == 0)
{
break;
}
g.addEdge(i, x);
}
}
g.topological_sort();
bool flag = 1;
while (!output.empty())
{
int x = output.front();
output.pop();
if (flag)
{
cout << x;
flag = 0;
}
else
{
cout << " " << x;
}
}
return 0;
}
边栏推荐
- MYSQL架构——用户权限与管理
- Install the gold warehouse database of NPC
- Google Earth engine (GEE) - globfire daily fire data set based on mcd64a1
- Attack and defense world misc advanced area Hong
- Redis入門完整教程:Pipeline
- 【lua】int64的支持
- A complete tutorial for getting started with redis: redis shell
- 攻防世界 MISC 進階區 Erik-Baleog-and-Olaf
- 蓝队攻防演练中的三段作战
- 【ODX Studio編輯PDX】-0.2-如何對比Compare兩個PDX/ODX文件
猜你喜欢
Locust performance test - environment construction and use
堆排序代码详解
Redis的持久化机制
质量体系建设之路的分分合合
新版判断PC和手机端代码,手机端跳转手机端,PC跳转PC端最新有效代码
Wake up day, how do I step by step towards the road of software testing
Attack and defense world misc advanced area Hong
MYSQL架构——逻辑架构
Redis: redis configuration file related configuration and redis persistence
Redis入门完整教程:事务与Lua
随机推荐
Three stage operations in the attack and defense drill of the blue team
Redis入门完整教程:初识Redis
Logo special training camp Section IV importance of font design
Unity Xiuxian mobile game | Lua dynamic sliding function (specific implementation of three source codes)
【剑指offer】1-5题
How to send a reliable request before closing the page
微信小程序显示样式知识点总结
Pagoda 7.9.2 pagoda control panel bypasses mobile phone binding authentication bypasses official authentication
P2181 对角线和P1030 [NOIP2001 普及组] 求先序排列
Install the gold warehouse database of NPC
Redis入门完整教程:事务与Lua
mamp下缺少pcntl扩展的解决办法,Fatal error: Call to undefined function pcntl_signal()
[cooking record] - stir fried 1000 pieces of green pepper
攻防世界 MISC 进阶区 hong
Redis démarrer le tutoriel complet: Pipeline
Naacl-22 | introduce the setting of migration learning on the prompt based text generation task
剑指 Offer 67. 把字符串转换成整数
[the 2023 autumn recruitment of MIHA tour] open [the only exclusive internal push code of school recruitment eytuc]
攻防世界 misc 高手进阶区 a_good_idea
Redis入门完整教程:键管理