拓扑排序
来源:互联网 发布:wps不能使用数据透视表 编辑:程序博客网 时间:2024/06/02 06:32
♥ 有错误请指出哟~
*1、定义:
对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。
即:按照 图中各点 出现的先后顺序排列
*
*2.步骤:
(1) 选择一个入度为0的顶点并输出;
(2) 从图中删除此点及其所有出边,即该点及所有与该点相邻的点的入度-1。
循环结束后,若输出的顶点数小于网中的顶点数,即图不空,则输出“有回路”信息,否则输出的序列就是一种拓扑序列。
*
*3.代码实现
//找入度为零的边#include<iostream>#include<cstring>#define maxx 105using namespace std;int n,m,indegree[maxx],mapp[maxx][maxx],x,y;void toposort(int in[maxx],int a[maxx][maxx],int mm){//入度-- ≈ 删边,∴要保证有边可删,∴循环m次 for(int i=1;i<=mm;i++) { for(int j=1;j<=mm;j++) { if(in[j] == 0) { in[j]--; cout<<j; for(int k=1;k<=mm;k++) { if(a[j][k] == 1) { in[k]--; } } } } }} int main(){ cin>>n>>m; memset(mapp,0,sizeof(mapp)); memset(indegree,0,sizeof(indegree)); for(int i=1;i<=n;i++) { cin>>x>>y;//x与y相邻 mapp[x][y]=1; indegree[y]++; } toposort(indegree,mapp,m); return 0;}
阅读全文
0 0
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 【拓扑排序】
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- AvaudioPlayer
- hdu6126 Give out candies(SPFA+Dinic)
- Docker命令详解
- 成为优秀算法工程师的唯一条件
- SQL的基本曾删改查
- 拓扑排序
- 大数据string八进制转为string十六进制(通过string的二进制)
- caffe框架下目标检测——faster-rcnn实战篇操作
- [RK3288][Android7.1.2] Launcher3 源码阅读之step4:详解Launcher的OnCreate方法的C部分
- Linux Qt调用 LibVLC记录
- 第四章 Thread Executors(Executors多线程架构)【下】
- jquery+ajax+mysql+php上拉加载瀑布流效果或者jquery+ajax+mysql+php滚动条向下滚动瀑布流效果加载
- dubbo--学习
- MultiActionController,PropertiesMethodNameResolver,ParameterMethodNameResolver简单例子