当前位置:网站首页>[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;
}
边栏推荐
- sobel过滤器
- Gnawing down the big bone - sorting (II)
- Create Ca and issue certificate through go language
- 剑指 Offer 67. 把字符串转换成整数
- Analysis of environmental encryption technology
- 集群的概述与定义,一看就会
- 【ODX Studio編輯PDX】-0.2-如何對比Compare兩個PDX/ODX文件
- Redis的持久化机制
- Redis démarrer le tutoriel complet: Pipeline
- Google Earth engine (GEE) - globfire daily fire data set based on mcd64a1
猜你喜欢

Close system call analysis - Performance Optimization

Redis démarrer le tutoriel complet: Pipeline

Locust performance test - environment construction and use
![P2181 对角线和P1030 [NOIP2001 普及组] 求先序排列](/img/79/36c46421bce08284838f68f11cda29.png)
P2181 对角线和P1030 [NOIP2001 普及组] 求先序排列

Redis入门完整教程:慢查询分析

Tla+ introductory tutorial (1): introduction to formal methods

Redis getting started complete tutorial: Geo

Unity-VScode-Emmylua配置报错解决

Redis introduction complete tutorial: slow query analysis

攻防世界 MISC 进阶区 hong
随机推荐
Sobel filter
Co create a collaborative ecosystem of software and hardware: the "Joint submission" of graphcore IPU and Baidu PaddlePaddle appeared in mlperf
集群的概述与定义,一看就会
How to choose a securities company? Is it safe to open an account on your mobile phone
Photoshop批量给不同的图片添加不同的编号
【图论】拓扑排序
企业如何跨越数字化鸿沟?尽在云原生2.0
Sword finger offer 68 - I. nearest common ancestor of binary search tree
攻防世界 MISC 进阶区 can_has_stdio?
Is Huatai Securities a nationally recognized securities firm? Is it safe to open an account?
Pagoda 7.9.2 pagoda control panel bypasses mobile phone binding authentication bypasses official authentication
9 - 类
华泰证券是国家认可的券商吗?开户安不安全?
MYSQL架构——逻辑架构
堆排序代码详解
Sword finger offer 67 Convert a string to an integer
P2181 diagonal and p1030 [noip2001 popularization group] arrange in order
Attack and defense world misc advanced area can_ has_ stdio?
SHP data making 3dfiles white film
Redis入门完整教程:API的理解和使用