当前位置:网站首页>[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;
}
边栏推荐
- 9 - class
- 新版判断PC和手机端代码,手机端跳转手机端,PC跳转PC端最新有效代码
- 页面关闭前,如何发送一个可靠请求
- 攻防世界 MISC 进阶 glance-50
- [OpenGL] note 29 anti aliasing (MSAA)
- How to choose a securities company? Is it safe to open an account on your mobile phone
- 蓝队攻防演练中的三段作战
- String类中的常用方法
- 【ODX Studio编辑PDX】-0.2-如何对比Compare两个PDX/ODX文件
- 10 schemes to ensure interface data security
猜你喜欢
NFT insider 64: e-commerce giant eBay submitted an NFT related trademark application, and KPMG will invest $30million in Web3 and metauniverse
Erik baleog and Olaf, advanced area of misc in the attack and defense world
Close system call analysis - Performance Optimization
Redis入门完整教程:Pipeline
Redis getting started complete tutorial: Geo
安装人大金仓数据库
PMO: compare the sample efficiency of 25 molecular optimization methods
位运算符讲解
Serial port data frame
A complete tutorial for getting started with redis: transactions and Lua
随机推荐
攻防世界 MISC 进阶 glance-50
Talk about Middleware
How can enterprises cross the digital divide? In cloud native 2.0
[machine learning] handwritten digit recognition
Co create a collaborative ecosystem of software and hardware: the "Joint submission" of graphcore IPU and Baidu PaddlePaddle appeared in mlperf
Common methods in string class
Three stage operations in the attack and defense drill of the blue team
Li Kou 98: verify binary search tree
Async await used in map
Google Earth Engine(GEE)——Tasks升级,实现RUN ALL可以一键下载任务类型中的所有影像
Solana chain application crema was shut down due to hacker attacks
攻防世界 misc 高手进阶区 a_good_idea
Redis: redis configuration file related configuration and redis persistence
EditPlus--用法--快捷键/配置/背景色/字体大小
Sobel filter
Attack and defense world misc advanced grace-50
Redis入门完整教程:键管理
Sword finger offer 67 Convert a string to an integer
Redis入门完整教程:初识Redis
企业如何跨越数字化鸿沟?尽在云原生2.0