(实验内容只是求关键路径的一部分,在网站找不到只含这一部分的参考,所以自己给搞了一下,欢迎大佬指正。)

题目描述:给定有向图无环的边信息,求每个顶点的最早开始时间、最迟开始时间。

输入

第一行图的顶点总数

第二行边的总数

第三行开始,每条边的时间长度,格式为源结点   目的结点   长度

输出

第一行:第个顶点的最早开始时间

第二行:每个顶点的最迟开始时间

样例输入:

9
12
0 1 3
0 2 10
1 3 9
1 4 13
2 4 12
2 5 7
3 6 8
3 7 4
4 7 6
5 7 11
6 8 2
7 8 5

样例输出:

0 3 10 12 22 17 20 28 33
0 9 10 23 22 17 31 28 33 

代码(含解析):

#include<iostream>
#include<queue>
using namespace std;
int main()
{int vexnum;int arcnum;cin >> vexnum >> arcnum;int* in = new int[vexnum];int* ve = new int[vexnum];//最早开始时间int* vl = new int[vexnum];//最晚开始时间int** p;p = new int* [vexnum];for (int i = 0; i < vexnum; i++) {in[i] = 0;p[i] = new int[vexnum];for (int j = 0; j < vexnum; j++)p[i][j] = 0;}int s1, s2, length;for (int i = 0; i < arcnum; i++){cin >> s1 >> s2 >> length;p[s1][s2] = length;if (p[s1][s2] != 0){in[s2] += 1;}}queue<int>Q;for (int i = 0; i < vexnum; i++){if (in[i] == 0)Q.push(i);}int* list = new int[vexnum+1];//建立一个数组存放拓扑排序的结果int i = 0;while (!Q.empty()){int t = Q.front();Q.pop();for (int j = 0; j < vexnum; j++){if (p[t][j] != 0){in[j]--;if (in[j] == 0)Q.push(j);}}list[i] = t; i++;}ve[0] = 0;for (int i = 0; i < vexnum; i++)vl[i] = 0;for (int j = 1; j < vexnum; j++){int max = 0;for (int i = 0; i < vexnum; i++){if (p[list[i]][list[j]]!=0&&(p[list[i]][list[j]] + ve[i])> max){max = p[list[i]][list[j]] + ve[i];}}ve[j] = max;}for (int i = 0; i < vexnum; i++){for (int j = 0; j < vexnum; j++)//题目输出按照拓扑排序的顺序,需要进行这一步查找if (list[j] == i)cout << ve[j] << " ";}cout << endl;vl[vexnum - 1] = ve[vexnum - 1];for (int i = vexnum - 2; i > 0; i--){int min = 1000;for (int j = vexnum - 1; j >= 0; j--){if (p[list[i]][list[j]] != 0 && (vl[j] - p[list[i]][list[j]]) < min){min = vl[j] - p[list[i]][list[j]];}}vl[i] = min;}for (int i = 0; i < vexnum; i++){for(int j=0;j<vexnum;j++)if(list[j] == i)cout << vl[j] << " ";}cout << endl;
}

图的关键路径--最早开始时间和最晚开始时间相关推荐

  1. 详解活动图计算关键路径、最早开始时间、最晚开始时间、冗余时间,C++ 程序实现

    题目 下图是一个软件开发项目的活动图,对于图中每条边的数字表示完成这条边代表的活动的天数.例如,完成终止于里程碑E的活动需要 4 天时间. 对于每个活动,列出它的前驱,并计算最早开始时间.最晚开始时间 ...

  2. 软件项目管理中通过CPM算法求关键路径,最早和最晚开始时间

    首先贴一下百度百科对CPM的定义: 关键路径法(Critical Path Method, CPM)是一种基于数学计算的项目计划管理方法,是网络图计划方法的一种,属于肯定型的网络图.关键路径法将项目分 ...

  3. 图的关键路径(含多支交叉路径分离输出)

    文章目录 关键路径的理解 关键路径求解的图解与分析 关键路径查找的代码实现 多支交叉路径的分离输出 总结 此文代码均可在Windows与Linux操作系统下的常用编译器上运行,例如:vs.vscode ...

  4. 活动图当中的关键路径、点的最早开始时间最晚开始时间、活动的最长耽搁时间、最晚开工时间

    1.关键路径 最长的 2.点的最早开始时间 最长的 3.点的最晚开始时间 关键路径-该点到终点的最大值 4.活动最多可以耽搁的时间 后继点的最晚-前继点的最早-该活动时间 5.活动的最晚开始时间 关键 ...

  5. AOE图,最早活动时间最晚活动时间,关键路径关键节点

    我们直接举例,假设你和朋友约好去看电影,V7是你们约定到达地点的时间,v1节点是大家一起从各自家里出发的时间,其中的v2,v3,v4,v5,v6是各自坐交通工具到达换乘地点的时间,其中边的权值为你需要 ...

  6. 软件工程之PERT图(关键路径)

    三 用途 PERT图一般用于计算关键路径 3.1 关键路径的概念 关键路径指的是花费时间最长的事件和活动的序列. 相关概念说明: ①最早开始时间:某段工程开始点之前最长的输入流之和 ②最晚开始:关键路 ...

  7. 有向无环图之关键路径

    **有向无环图之关键路径** 1 AOE-网:边表示活动的网.AOE-网是一个带权的有向无环图,其中顶点表示事件,弧表示活动,权表示活动持续的时间. 2 通常AOE-网可用来估算工程的完成时间. 例图 ...

  8. 【数据结构】什么的图的关键路径?关键路径相关概念?关键路径算法实现?

    目录 一.什么是关键路径? 1.现实问题 二.关键路径相关概念? 三.关键路径算法实现? 1.算法分析 2.算法步骤 3.算法实现 一.什么是关键路径? 关键路径:若有向图中,各顶点表示事件,各有向边 ...

  9. 关键路径最早最迟开始时间

    数据结构AOE网关键路径问题,不算活动差,直接看事件最迟最早差,差为0的就是关键路径,这样做对么? 数据结构AOE网关键路径问题,不算活动差,直接看事件最迟最早差,差为0的就是关键路径,这样做对么?我 ...

最新文章

  1. python实现STM32单片机通信
  2. 戴尔5598安装系统流程
  3. Nginx 启动报错 “/var/run/nginx/nginx.pid failed”
  4. 找到符合条件的索引_程序员写了多年CRUD,总结出数据库索引这几点值得注意...
  5. 2019公需科目快速学完_3周考过科目二,是这样做到的!
  6. 手写分页 个人感觉还能优化,甚至抽象出来,需要高手讲解
  7. Nginx 指令目录(中文版)
  8. SQL OUTER JOIN概述和示例
  9. 让你更好的使用jQuery插件
  10. 软件构造笔记——Java基本数据类型和对象数据类型
  11. 学生个人网页模板 学生个人网页设计作品 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计
  12. 经纬财富:四平怎么炒白银能挣到钱?
  13. 英:英语面试常用口语900句
  14. 流批OLAP一体的flink引擎
  15. 实现一个方法,给定一个输入字符串,能够删除所有连续同样字母(大小写不敏感)。例如,输入为ABBCCCCCBBAB,输出就是 ABCBAB
  16. 转自科学网:《评论:“副教授,我缺少的是什么?”》
  17. ParaView-2
  18. 尚硅谷 JavaScript 笔记(张晓飞 2019 高级版)
  19. FOURCC四字符码对照表
  20. video dispose

热门文章

  1. 分布式文件系统 IPFS 与 FileCoin
  2. AMD的cpu如何安装Mac OS
  3. SEO外链专员操作规范
  4. 收集一些前端工具库资源
  5. 得一微冲刺科创板上市:拟募资约12亿元,2021年营收同比增长260%
  6. java常用类(Math数学类)
  7. 一个操盘手的自白:做盘的奥秘
  8. VCG笔记-如何定义mesh
  9. 两直线垂直的充要条件
  10. linux kde. yum,yum安装gnome和kde桌面