#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 105
#define INFINITY -10005
#define MAX_VERTEX_NUM 100
#define ERROR 0
#define OK 1
int TopOrder[MAX_VERTEX_NUM];
int time[MAX_VERTEX_NUM];
typedef int Status;
struct AdjVNode//邻接点
{
int adjvex;
int weight;
AdjVNode *next;
};
typedef struct VNode//顶点
{
AdjVNode *FirstEdge;
} AdjList[MAX_VERTEX_NUM];
//typedef struct GNode *LGraph;
typedef struct GNode//图
{
int Nv;//顶点数
int Ne;//边数
AdjList vertices;//邻接表
}*LGraph;
//typedef struct ENode *Edge;
typedef struct ENode//边
{
int v1,v2;
int weight;
}*Edge;
typedef struct QNode//链队列
{
int data;
struct QNode *next;
} QNode,*QueuePtr;
typedef struct
{
QueuePtr front; //对头指针
QueuePtr rear; //队尾指针
} LinkQueue;
Status InitQueue(LinkQueue &Q)
{
//构造一个空队列Q
Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
if (!Q.front)
exit(0);
Q.front->next = NULL;
return OK;
}
Status QueueEmpty(LinkQueue Q)
{
//判断队列是否为空
if (Q.front == Q.rear)
return 1;
return 0;
}
Status EnQueue(LinkQueue &Q, int e)
{
//插入元素e为Q的新的队尾元素
QueuePtr p = (QueuePtr)malloc(sizeof(QNode));
if (!p)
return ERROR;
p->next = NULL;
p->data = e;
Q.rear->next = p;
Q.rear = p;
return OK;
}
Status DeQueue(LinkQueue &Q, int &e)
{
//若队列不空,则删除Q的队头元素,用e返回其值,并返回OK
if (Q.front == Q.rear)
return ERROR;
QueuePtr p;
p = Q.front->next;
e = p->data;
Q.front->next = p->next;
if (Q.rear == p)
Q.rear = Q.front;
free(p);
return OK;
}
LGraph CreateLGraph(int n,int m)
{
AdjVNode *NewNode;
int v;
LGraph G=(LGraph)malloc(sizeof(struct GNode));
Edge E=(Edge)malloc(sizeof(struct ENode));
G->Nv=n;
for(v=0; v<n; v++)
{
G->vertices[v].FirstEdge=NULL;
}
for(v=0; v<m; v++)
{
scanf("%d%d%d",&E->v1,&E->v2,&E->weight);
//InsertEdge(G,E);
NewNode=(AdjVNode*)malloc(sizeof(AdjVNode));
NewNode->adjvex=E->v2;
NewNode->weight=E->weight;
NewNode->next=G->vertices[E->v1].FirstEdge;
G->vertices[E->v1].FirstEdge=NewNode;
}
return G;
}
int TopSort(LGraph Graph)//拓扑排序
{
int Indegree[MAX_VERTEX_NUM], cnt;
int V;
AdjVNode *W;
LinkQueue Q;
InitQueue(Q);
for( V = 0; V<Graph->Nv; V++)
Indegree[V]=0;
for( V = 0; V<Graph->Nv; V++)
for(W = Graph->vertices[V].FirstEdge; W; W = W->next)
Indegree[W->adjvex]++; //入度增加
for(V = 0; V < Graph->Nv; V++)
if(Indegree[V]==0)
EnQueue(Q, V);
cnt = 0;
while(!QueueEmpty(Q))
{
DeQueue(Q,V);
//最短工期
for(W=Graph->vertices[V].FirstEdge; W!=NULL; W = W->next)
{
if(time[W->adjvex]<time[V]+W->weight)
time[W->adjvex]=time[V]+W->weight;
}
TopOrder[cnt++] = V;
for(W=Graph->vertices[V].FirstEdge; W!=NULL; W = W->next)
{
if(--Indegree[W->adjvex]==0)
EnQueue(Q, W->adjvex);
}
}
if(cnt != Graph->Nv)
return -1;
else
return 1;
}
int main()
{
int n,m;
LGraph G;
scanf("%d%d",&n,&m);
G=CreateLGraph(n,m);
int flag=TopSort(G);
if(flag==1)
{
int Max=time[0];
for(int i=1; i<G->Nv; i++)
{
if(time[i]>Max)
Max=time[i];
}
printf("%d",Max);
}
else
printf("Impossible");
return 0;
}
相关推荐
Uds诊断自动化(CANoe.diva应用)
(7)其他配置选择可以保持默认(一般情况下,DTC以及31服务、下载服务需要另外测试)。(1)打开CANoe.Diva软件,并新建Diva工程。(2)设置工程名和保存位置;在"Specification file"(3)测试案例打开后的界面如下,可以对要进行测试的案例进行勾选,(可查看下角的进度条)后;(3)等待DIva工程的生成;(4)接下来是修改Diva工程选项,如下图点击。,如用例间的时间间隔、复位等待时间等。,即可打开导入的测试工程。,即可生成测试用例。(1)在CANoe中。
最短工期 (25分)
一个项目由若干个任务组成,任务之间有先后依赖顺序。项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务。现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。 输入格式: 首先第一行给出两个正整数:项目里程碑的数量 N(≤100)和任务总数 M。这里的里程碑从 0 到 N−1 编号。随后 M 行,每行给出一项任务的描述,格式为“任务起始里程碑 任务结束里程碑 工作时长”,三个数字均为非负整数,以空格分隔。 输出格式: 如果整个项目的安排是合理可行的,在一行中输
飞行器坐标转换
本文定义的是右手直角坐标系,x−y−zx-y-zx−y−z轴分别为北-天-东。从AAA坐标系到BBB坐标系是分别绕y−z−xy-z-xy−z−x轴,即天-东-北旋转ψ−θ−γψ−θ−γ。如果AAA是惯性系,BBB是机体系,则这三个角度分别为偏航角、俯仰角、横滚角。图1 惯性系到机体系。
PTA:最短工期 (25分)(拓扑排序笔记--入门到解题)
拓扑排序 转载自: https://blog.csdn.net/y_universe/article/details/79342940 定义 对一个有向无环图(Directed Acyclic Graph简称DAG) G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topol...
Windows下Python多版本共存与切换的终极指南(含环境变量详解)
本文详细解析了在Windows系统下实现Python多版本共存与切换的完整方案。通过深入讲解环境变量Path的底层机制,提供了从安装策略、精细化Path管理到创建快速切换脚本的实战指南,并介绍了py启动器和虚拟环境等高级技巧,帮助开发者彻底解决版本冲突问题,提升开发效率。
5、数字图像采集:X射线成像技术全解析
本文全面解析了数字图像采集中的X射线成像技术,涵盖数字X射线探测器、荧光透视与血管造影、乳腺摄影以及计算机断层扫描(CT)的图像重建原理。详细介绍了TFT平板探测器的优势、DSA技术在血管成像中的应用、乳腺摄影对高对比度和分辨率的需求,以及CT中基于Radon变换和滤波反投影的重建方法。同时探讨了噪声、部分容积效应、金属伪影和运动伪影等常见问题及其影响。最后总结了各类X射线成像技术的特点与应用场景,并展望了未来在图像质量提升和剂量优化方面的技术发展方向。
7-3 最短工期
一个项目由若干个任务组成,任务之间有先后依赖顺序。项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务。现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。
利用人工神经网络在Abaqus中实现本构模型的网格粗化计算框架:详细指南与实践
在这篇文章中,我们详细介绍了如何在Abaqus中实现基于人工神经网络(ANN)的本构模型以进行网格粗化的计算框架。我们通过两个主要模块——数据生成器模块和ANN训练模块,实现了这一计算框架,并将训练好的ANN集成到Abaqus的用户材料子程序(UMAT)中,创建了一个基于ANN的本构模型。我希望这篇文章能帮助到那些希望在Abaqus中实现基于ANN的本构模型的读者,同时,我也非常欢迎大家提出宝贵的意见和建议,让我们共同进步。
最短工期算法
本题与上一题类似,均是通过拓扑排序作为解题的关键步骤,该题唯一的不同就是需要计算权值来求得每个结点的最早发生时间。点击这个链接可以快速查看拓扑排序的算法一个项目由若干个任务组成,任务之间有先后依赖顺序。项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务。现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。
手把手入门YOLO到改进优化教程 | 【P6进阶篇】YOLOv8模型剪枝优化实战-LAMP剪枝
本节首先介绍LAMP剪枝相关理论。然后结合YOLO框架,手把手搭建剪枝工程,包括配置文件修改、剪枝脚本构建等内容。
PLC集群管理:C#上位机实现10台以上分布式PLC的集中监控与指令下发
本文介绍了一套基于C# WPF开发的PLC集群管理系统,用于解决现代工业自动化产线中分布式PLC监控难题。系统采用三层解耦架构,支持100台以内不同品牌PLC的集中管理,具备批量数据采集、指令下发、实时报警等功能。核心创新点包括:1)基于异步IO的连接池管理;2)统一通信接口设计;3)寄存器合并优化算法;4)三级优先级指令队列。实际应用表明,系统数据采集延迟低于100ms,指令下发成功率99.9%,有效解决了传统单PLC监控模式存在的效率低下问题。
7-14 最短工期
7-14 最短工期 模型 显然是一个有向图 而且是一个拓扑图,题目模型既是拓扑排序 ## 拓扑排序 什么是拓扑图 简单的说就是一个有依赖关系的图,例如完成任务x的时候必须要先完成任务1.2.3.4.5........ 什么是拓扑排序 简单的说就是可以通过这个序列去依次完成任务 在这个形成的序列中,某一个元素,它的依赖关系一定在它前面 如何获得拓扑序列呢? 1.首先记录每个点的入度 2.如果这个存...
EtherCAT ROS2 入门教程(一)
本文介绍了EtherCAT驱动与ROS2的集成方案,主要包括三部分内容:1)在Ubuntu 22.04上安装IgH EtherCAT主站的详细步骤,包括内核配置、源码编译和网络适配器设置;2)构建ethercat_driver_ros2,通过ros2_control描述文件配置硬件接口和EtherCAT从站模块插件;3)使用方法,包括启动EtherCAT主站和运行配置包。该方案支持通过参数文件定义硬件接口,并提供通用和专用两种EtherCAT模块插件,便于开发基于EtherCAT的工业应用。
天梯赛 最短工期(拓扑排序)
7-12最短工期(25 分) 一个项目由若干个任务组成,任务之间有先后依赖顺序。项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务。现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。 输入格式: 首先第一行给出两个正整数:项目里程碑的数量N(≤100)和任务总数M。这里的里程碑从 0 到N−1编号。随后M行,每...
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
【软考高级】最短工期
这个时间通常是通过对项目的各个任务进行时间估算,并考虑任务之间的依赖关系来确定的。通俗地说,关键路径就像一场接力赛中最慢的一条赛道,虽然其他赛道跑得再快,比赛结束的时间仍要等这条最慢的队伍跑完。关键路径上的任务是没有时间缓冲的,它们的任何延迟都会直接导致项目整体的延迟。因此,关键路径的长度就是项目的最短工期。某项目由A、B、C、D、E、F、G、H活动模块组成,下表给出了各活动之间的依赖关系,以及它们在正常情况的工期。关键路径上的活动没有浮动时间,也就是说,它们一旦延误,整个项目就会延误。
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
【未完成】7-13 最短工期 (25 分)
7-13最短工期(25分) 一个项目由若干个任务组成,任务之间有先后依赖顺序。项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务。现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。 输入格式: 首先第一行给出两个正整数:项目里程碑的数量N(≤100)和任务总数M。这里的里程碑从 0 到N−1编号。随后M行,每行给出一项任...
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
(拓扑排序)最短工期 (25分)
题目链接: 最短工期 (25分) 拓扑排序 只适用于有向无环图 有向图无环图一定有拓扑排序 核心算法: 把入度为0的点存放在队列里面 删除该顶点连接的所有边 解题步骤: 记录每个点的入度大小 把入度为0的点放入队列中去 用一个dist[]数组存放路径的大小,用cnt记录顶点个数 删除该顶点连接的所有边,即每条边对应的点的入度-1 再次把入度为0的点存放在队列里面 更新dist[]数组的大小,存放路径最长的 如果记录的顶点个数小于该图中的顶点个数,则该图中存在回路,不能实现拓扑排序 代码如
最短工期 数据结构实现
最短工期(20 分)一个项目由若干个任务组成,任务之间有先后依赖顺序。项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务。现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。输入格式:首先第一行给出两个正整数:项目里程碑的数量 N(≤100)和任务总数 M。这里的里程碑从 0 到 N−1 编号。随后 M 行,每行给出一项任务的描述,格式为“任务起...
关键路径 AOE 拓扑排序 最短工期 java
拓扑排序是关键路径实现的基础 有两种实现方式: 1:dfs https://blog.csdn.net/aiwo1376301646/article/details/93350103 2:queue https://blog.csdn.net/aiwo1376301646/article/details/93353861 关键路径 代码参考博客,真心推荐,代码既短又清晰 https...
PTA 最短工期 (25 分)
7-12 最短工期 (25 分) 一个项目由若干个任务组成,任务之间有先后依赖顺序。项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务。现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。 输入格式: 首先第一行给出两个正整数:项目里程碑的数量 N(≤100)和任务总数 M。这里的里程碑从 0 到 N−1 编号。随后 M 行,每行给出一项任务的描...
PTA 7-4 最短工期(25分)
数据结构与算法 拓扑排序
最短工期(有向图的拓扑排序)
最短工期 (25 分) 一个项目由若干个任务组成,任务之间有先后依赖顺序。项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务。现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。 输入格式: 首先第一行给出两个正整数:项目里程碑的数量 N(≤100)和任务总数 M。这里的里程碑从 0 到 N−1 编号。随后 M 行,每行给出一项任务的描述,格式为“任务起始里程碑 任务结束里程碑 工作时长”,三个数字均为非负整数,以空格分隔。 输出格式: 如果整个项目的安排
基础实验6-2.6 最短工期(拓扑排序)
建图与拓扑排序: 项目中的任务可以看作一个有向图,其中每个任务的开始和结束里程碑就是图中的节点,任务的工作时长则是有向边的权重。 如果任务从节点 u 到节点 v,工作时长为 w,则我们在图中添加一条从 u 到 v 的有向边,并记录权重为 w。 拓扑排序: 为了找到最早完工时间,首先需要对任务依赖关系进行拓扑排序。这可以帮助我们在考虑每个任务时,确保其所有前置任务都已完成。 计算最早完成时间: 在进行拓扑排序的同时,我们可以计算每个节点的最早完成时间。 假设我们在拓扑排序过程中访问到节点 u,则节点 u
7-7 最短工期
最短工期 一个项目由若干个任务组成,任务之间有先后依赖顺序。项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务。现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。 输入格式: 首先第一行给出两个正整数:项目里程碑的数量 N(≤100)和任务总数 M。这里的里程碑从 0 到 N−1 编号。随后 M 行,每行给出一项任务的描述,格式为“任务起始里程碑 任务结束里程碑 工作时长”,三个数字均为非负整数,以空格分隔。 输出格式: 如果整个项目的安排是合理可行的,
基础实验6-2.6 最短工期 (25 分)
基础实验6-2.6 最短工期 (25 分) 拓扑排序,AOE网 #include<stdio.h> #include<string.h> const int N=1010; const int inf=0x3f3f3f; int map[N][N]; int in[N]; int early[N]; int ret=0; int n,m,ans=0; void t1() { for(int k=0;k<n;++k) { for(int
3435



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



