#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;
}
AOV、AOE
最新推荐文章于 2024-06-26 10:30:30 发布
