关键路径 ← AOE网
创始人
2024-03-31 13:25:00
0

【问题描述】
给定一个只有一个源点和一个汇点的有向图,要求求出所有的关键活动,并计算完成该工程至少需要多少时间。

【输入格式】
第一行包含两个整数 n 和 m,表示顶点数和边数。
接下来 m 行,每行包含三个整数 u,v,w,表示点 u 和点 v 之间存在一条权值为 w 的边。

【输出格式】
输出完成该工程至少需要多少时间及各条关键路径。
 


【算法分析】
本问题本质上就是利用AOE-网求关键路径的问题。AOE-网在工程计划和经营管理中有广泛的应用,针对实际的应用问题,通常需要解决以下两个问题:
(1)估算完成整项工程至少需要多少时间;
(2)判断哪些活动是影响工程进度的关键。
工程进度控制的关键在于抓住关键活动。在一定范围内,非关键活动的提前完成对于整个工程的进度没有直接的好处,它的稍许拖延也不会影响整个工程的进度。工程的指挥者可以把非关键活动的人力和物力资源暂时调给关键活动,加快其进展速度,以使整个工程提前完工。

【算法代码】

#include 
using namespace std;typedef pair PII;
const int maxn=211;
int val[maxn],e[maxn],ne[maxn],h[maxn],idx;
int in[maxn], cpin[maxn];
int q[maxn];
int ans;int n,m;void add(int a,int b,int w) {val[idx]=w,e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}bool topSort() {int head=0, tail=0;for(int i=1; i<=n; i++) {if(in[i]==0) q[tail++]=i;}while(head path;
set s;
void dfs(int u, int cost) {if(h[u]==-1) {if(ans<=cost) {if(ans>n>>m) {memset(h,-1,sizeof(h));memset(in,0,sizeof(in));ans=0;while(m--) {int a,b,w;cin>>a>>b>>w;add(a,b,w);in[b]++;}memcpy(cpin,in,sizeof(in));if(topSort()) {for(int i=1; i<=n; i++) {if(cpin[i]==0) dfs(i,0);}cout<"<2
2->5
5->7
5->8
7->9
8->9
*/




【参考文献】
https://blog.nowcoder.net/n/20ddbcbe3a274052afdac2dd62c6e08f
https://blog.csdn.net/Keep_Trying_Go/article/details/126465446
https://www.acwing.com/solution/leetcode/content/62822/
https://blog.csdn.net/qq_42107348/article/details/125812306


 

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...