这个算是关键路径的模版题目了,解这个题目之前,首先说下关键路径的含义,传送门(度娘),个人的见解是,关键路径就是木桶的短板问题,比如有一群人约好去某个地方,大家从同一个地方同一时间开始出发,有些人选择骑车,有些人选择走路,有些选择公交。。。。。。那么最迟到达的那个人需要的时间就相当于关键路径。

图可能不是连通的,但这个不影响,我们只需要计算最长的那段

以下是代码,相当于在拓扑排序下求各个点到起点的最长路径

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define val 1001
struct link
{int v;int cost;struct link *next;
};
struct node
{struct link *next;
}vode[val];
int into[val],ee[val],n,m;//into表示入度,ee表示从最早完成该任务的时间,ee初始化为1
void topsort();//拓扑排序,边拓扑边求最长路径
void create_link();
int main()
{int i,j,ans;while(scanf("%d %d",&n,&m)!=EOF){memset(into,0,sizeof(into));for(i=0;i<n;i++)ee[i]=1;create_link();ans=0;topsort();for(i=0;i<n;i++)if(ee[i]>ans) ans=ee[i];printf("%d\n",ans);}return 0;
}
void create_link()
{int i,j,a,b,c;struct link *s;for(i=0;i<n;i++)vode[i].next=NULL;for(i=0;i<m;i++){scanf("%d %d %d",&a,&b,&c);into[b]++;s=(struct link*)malloc(sizeof(struct link));s->v=b;s->cost=c;s->next=vode[a].next;vode[a].next=s;}
}
void topsort()
{int i,j,v;struct link *p;for(i=0;i<n;i++){for(j=0;j<n;j++)if(into[j]==0) {v=j;break;}into[v]=-1;p=vode[v].next;while(p!=NULL){if(ee[p->v]<ee[v]+p->cost)//如果权值和更大,则替换ee[p->v]=ee[v]+p->cost;into[p->v]--;p=p->next;}}
}

转载于:https://www.cnblogs.com/yobobobo/archive/2012/08/06/3826866.html

hdu 4109 Instrction Arrangement 拓扑排序 关键路径相关推荐

  1. HDU 4109 Instrction Arrangement

    题目链接:https://vjudge.net/problem/HDU-4109 题目大意 有 N 个指令,标号从 0 ~ N - 1,和 M 个指令间的先后关系,每个关系都有一个权值 w,表示后一个 ...

  2. 拓扑排序--关键路径

    拓扑排序和关键路径是基于无环的有向图. 主要用来表示工程进度中各个事件之间的关系. 拓扑排序和关键路径 使用邻接表存储数据,最小生成树和最短路径用 邻接矩阵 存储数据. 1.拓扑排序 AOV网:在一个 ...

  3. 有向无环图的拓扑排序 关键路径

    拓扑排序:在不违背先决条件的基础上将有向无环图排成线性序列 - 排序结果不唯一 - 用一维数组Indegree存储各顶点的入度 - 采用邻接表与队列 bool TopSort(LGraph Graph ...

  4. HDU 4857 逃生(拓扑排序)

    拓扑排序 一.定义 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若<u,v> ∈ ...

  5. HDU 4857 逃生 【拓扑排序+反向建图+优先队列】

    逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...

  6. HDU hdu 2094 产生冠军 拓扑排序 判定环

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2094 对于是否有环,是通过一个N(节点数)的循环来判定.检查并更新每个节点的入度数. 每找到一个入度唯 ...

  7. HDU 5695 Gym Class 拓扑排序

    Gym Class 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5695 Description 众所周知,度度熊喜欢各类体育活动. 今天,它终于当 ...

  8. HDU 4917 Permutation(拓扑排序 + 状压DP + 组合数)

    题目链接 Permutation 题目大意:给出n,和m个关系,每个关系为ai必须排在bi的前面,求符合要求的n的全排列的个数. 数据规模为n <= 40,m <= 20. 直接状压DP空 ...

  9. 拓扑排序和关键路径的图形化显示

    资源下载地址:https://download.csdn.net/download/sheziqiong/85883662 资源下载地址:https://download.csdn.net/downl ...

最新文章

  1. 【c语言】蓝桥杯入门训练 Fibonacci数列
  2. 《软技能:代码之外的生存指南》一一11.1 明智的处理方式
  3. CDN服务技术架构图
  4. mysql6.5 操作日志
  5. iptables基本配置方法
  6. cvs有机添加剂检测_美国ECI CVS 电镀添加剂分析仪QL-10EX
  7. php 获取数组第一个元素的几种方法
  8. java怎么模拟rfid_如何使用RFID阅读器获取RFID标签上印刷的序列号?
  9. 数学建模之十分钟学会LINGO(附建模实战)
  10. 如何真机PC桥接小凡模拟器进行设备管理
  11. Micropython——使用PS2手柄实现远程遥控
  12. 线性模型(Linear Model)
  13. Python—docx 批量生成 docx 文件
  14. python+selenium自动登录163邮箱代码提示错误解决方案(如:NoSuchFrameException: Message: no such frame)
  15. Viper--方便好用的Golang 配置库
  16. NPN三极管和N沟道MOS管引脚定义
  17. 个人训练赛第二十场:对撞
  18. 吃货联盟订餐系统Java代码
  19. 网闸的设计原理与误区
  20. 【操作系统-进程】PV操作——生产者消费者问题

热门文章

  1. STM32F4 HAL库开发 -- SPI Flash
  2. Altium Designer -- PCB设置板框
  3. Guide To Using The Gnosis Multisig Wallet
  4. Understanding Ethereum Smart Contracts
  5. Autoencoder 详解
  6. 反卷积在神经网络可视化上的成功应用
  7. GAN在Image To Image translation 和Inverse Problem中的应用
  8. 【问链财经-区块链基础知识系列】 第十八课 区块链应用于贷款结算
  9. irobot扫地机器人 电压_【专利技术分析报告】“iRobot扫地机器人”核心专利
  10. [codevs 1035] 火车停留