拓扑排序
来源:互联网 发布:seo h1标签 编辑:程序博客网 时间:2024/06/05 02:10
一.概念
对于一个有向无环图G,其拓扑排序是G中所有节点的一种线性次序,该序列满足如果G包含(u,v),则节点u在拓扑排序中处于v节点的前面
二.算法实现
int topological_sort(int **G,int n) //G用邻接矩阵的方法保存有向图,n存储图的节点数{int * Flag=new int[n]; //Flag[i]用来标记Vi是否已被排到序列,若已被排到则Flag[i]=1,否则Flag[i]=0;int *T_S=new int[n]; //用来保存生成的序列for(int i=0;i<n;i++)Flag[i]=0;int temp=0;L:for(int i=0;i<n;i++){if(Flag[i]==0){int f=0; //用来标记是否有以Vi为终点的边for(int j=0;j<n;j++){if(Flag[j]==0){if(*((int*)G+n*j+i)==1) //若有从Vj到Vi的边标记f为1f=1;}}if(f==0){Flag[i]=1;T_S[temp]=i;temp=temp+1;goto L;}}}for(int i=0;i<n;i++)cout<<T_S[i]<<" ";return 0;}
三.举例
int main(){int G[6][6]={{0,1,1,0,0,0},{0,0,0,1,0,0},{0,1,0,0,1,0},{0,0,0,0,0,1},{0,0,0,0,0,1},{0,0,0,0,0,0}};topological_sort((int **)G,6);return 0;}结果:
0 0
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 【拓扑排序】
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- [NWPU][2014][TRN][12]并查集D - A Bug's Life POJ 2492
- 题目1518:反转链表
- NOPI使用手册
- android 设置全屏
- 如何使用hadoop实现精准营销
- 拓扑排序
- error C2600: 'Point::Point' : cannot define a compiler-generated special member function (must be de
- 循环链表-约瑟夫环(程序员面试宝典修正代码)
- Git详解
- 问题:关于坛友的一个js轮播效果的实现
- Spark 阅读资料汇总
- 计算机系统要素:第八章 虚拟机II 程序控制
- jsp spring 技术(一)
- ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL