枯木逢春不在茂,年少且惜镜子边人
该路劲的求法主要是基于拓扑排序实现的
其中有4个数组
ve : 事件的最早发生时间
vl : 事件的最迟发生时间
ee : 活动的最早发生时间
el : 活动的最迟发生时间
其中 :
ve [i] 的值是所有值到当前节点的最大值
vl [i] 的值是逆拓扑排序的求最小值
ee: 是与他相连接的节点的最早发生时间
el 比如 x-y 表示的是用 用y的最迟发生时间 - 权值得到x最迟发生时间
然后比较ee == el
老习惯 看代码后边的注释
#include<iostream>
#include<queue>
#include<stack>
#include<vector>
#define MAX 100
using namespace std;
struct node{
int v; //和当前节点邻接的节点
int w; //边上的权值
};
vector<node> map[MAX]; // 保持邻接矩阵
int vex,edg; //表示节点总数 和 边的总数
int inDegree[MAX],ve[MAX],vl[MAX]; //分别表示入度函数 , 事件的最早发生时间 ,事件的最迟发生时间
stack<int > tuopo; //拓扑排序的保存栈
vector<node> imppath[MAX]; //关键路径的保存
vector<int> temp; //关键路径节点的输出 保存容器
void tp(){
int pos ; // pos = -1;
queue<int > q; //利用队列遍历拓扑排序
for (int i = 0; i < vex; ++i) {
if (inDegree[i]==0){
//所有入度为0的节点入队
q.push(i);
}
}
while (!q.empty()){
//队不为空则
pos=q.front();
q.pop();
tuopo.
拓扑排序与关键路径算法实现

本文介绍了一种基于拓扑排序寻找关键路径的方法。通过维护事件的最早发生时间(ve)、最迟发生时间(vl)、活动的最早发生时间(ee)和最迟发生时间(el),在给定的有向无环图(DAG)中,求解关键活动和关键路径。拓扑排序首先找到所有入度为0的节点并进行排序,然后计算每个节点的最早和最迟发生时间。关键路径是满足ee==el条件的活动集合,最后通过深度优先搜索(DFS)输出关键路径。
最低0.47元/天 解锁文章
1289

被折叠的 条评论
为什么被折叠?



