赞
踩
- #include<stdio.h>
- #include<algorithm>
- #include<math.h>
- #include<iostream>
- #include<string.h>
- #include<vector>
- #include<queue>
- using namespace std;
- /*
- 拓扑排序:针对AOV网,按事件先后顺序输出(按照一定顺序输出入度为0的节点,并对节点的入度更新)
- 做法:定义缓冲队列,输出后修改邻节点的入度
- 在此提醒:邻接矩阵和邻接表区别:第二维是数组还是变长 数组
- AOE:
- 活动:是一个持续一定时间的事情
- 事件:一个活动完成,或者另一个活动开始的标志
- 关键活动:不能有任何的松弛,最早开始时间等于最晚开始时间
- */
- const int maxn=1e4;
- vector<int> g[maxn];
- int n,inde[maxn]={0};//入度,在录入数据时可记录(每有一条指向节点i的边,inde[i]++)
-
- bool topsort(){//最后有环就不能完全拓扑排序
- int num=0;
- queue<int> q;
- for(int i=0;i<n;i++)
- if(inde[i]==0)
- q.push(i);
- while(!q.empty()){
- int temp=q.front();
- //printf
- q.pop();
- for(int i=0;i<g[temp].size();i++){
- int u=g[temp][i];
- inde[u]--;
- if(inde[u]==0)
- q.push(u);
- }
- num++;
- }
- if(num==n) return true;
- else return false;
- }
-
- int main(){
-
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。