08-图8 How Long Does It Take

Given the relations of all the activities of a project, you are supposed to find the earliest completion time of the project.

Input Specification:

Each input file contains one test case. Each case starts with a line containing two positive integers NN (\le 100≤100), the number of activity check points (hence it is assumed that the check points are numbered from 0 to N-1N−1), and MM, the number of activities. Then MM lines follow, each gives the description of an activity. For the i-th activity, three non-negative numbers are given: S[i]E[i], and L[i], where S[i] is the index of the starting check point, E[i] of the ending check point, and L[i] the lasting time of the activity. The numbers in a line are separated by a space.

Output Specification:

For each test case, if the scheduling is possible, print in a line its earliest completion time; or simply output "Impossible".

Sample Input 1:

9 12
0 1 6
0 2 4
0 3 5
1 4 1
2 4 1
3 5 2
5 4 0
4 6 9
4 7 7
5 7 4
6 8 2
7 8 4

Sample Output 1:

18

Sample Input 2:

4 5
0 1 1
0 2 2
2 1 3
1 3 4
3 2 5

Sample Output 2:

Impossible
 
  1 #include<iostream>
  2 #include<malloc.h>
  3 #include<queue>
  4 using namespace std;
  5
  6 #define INF (100000)
  7 #define MAX 100
  8 //如果采用邻接链表的形式构造图,在每一个顶点中接下存储的边是其相邻的边
  9 typedef struct _Edge{
 10     int Adjv;
 11     int Weight;
 12
 13
 14     _Edge *Next;
 15 }Edge,nedge;
 16
 17 typedef struct _VNode
 18 {
 19     int  NodeName;
 20
 21     nedge *first_edge;
 22 }VNode;
 23
 24 typedef struct _Graph{
 25     int Vernum;
 26     int Edgnum;
 27     VNode G[MAX];
 28
 29 }MGraph;
 30
 31 MGraph *Graph;
 32
 33 void link_last(nedge *list, nedge *node)
 34 {  nedge *p=list;
 35 while(p->Next!=NULL)
 36 {
 37     p=p->Next;
 38 }
 39 p->Next=node;
 40 node->Next=NULL;
 41 }
 42
 43 MGraph *BuildMyGraph(int N,int M)
 44 {     MGraph *pG;
 45     pG=(MGraph*)malloc(sizeof( _Graph));//pG图必须要申请空间
 46
 47     pG->Vernum=N;pG->Edgnum=M;
 48
 49     //将点初始化
 50     for(int i=0;i<N;i++)
 51     {
 52         pG->G[i].NodeName=i;
 53
 54         pG->G[i].first_edge=NULL;
 55     }
 56             //输入数据
 57       int c1,c2,w1,i,j;
 58     Edge *edge;
 59     for(i=0;i<pG->Edgnum;i++)
 60     {
 61         cin>>c1>>c2>>w1;
 62         edge=(Edge*)malloc(sizeof(_Edge));
 63         edge->Adjv=c2;edge->Weight=w1;edge->Next=NULL;
 64         for(j=0;j<pG->Vernum;j++)
 65         {
 66             if(c1==pG->G[j].NodeName)
 67             {
 68                 if(pG->G[j].first_edge==NULL)
 69                 {
 70                     pG->G[j].first_edge=edge;
 71                 }
 72                 else
 73                 {
 74                     link_last(pG->G[j].first_edge,edge);
 75                 }
 76             }
 77         }
 78     }
 79     return pG;
 80 }
 81 int TopSort(int Total)
 82 {int Indegree[MAX],V;int TopOrder[MAX],i;int S[MAX];
 83   queue<int>Q; Edge *E;
 84
 85   for( i=0;i<Graph->Vernum;i++)
 86          Indegree[i]=0;
 87   //计算其入度,每个顶点的入度
 88   for(i=0;i<Graph->Vernum;i++)
 89   {
 90       E=Graph->G[i].first_edge;
 91       while(E!=NULL)
 92       {
 93           Indegree[E->Adjv]++;
 94           E=E->Next;
 95
 96       }
 97   }
 98   //找到入度为零的点
 99   for(i=0;i<Graph->Vernum;i++)
100   {
101         if(Indegree[i]==0)
102             {  Q.push(i);
103                 S[i]=0;
104         }
105   }
106   int cnt=0; int temp=0;
107   while(!Q.empty())
108   {
109       V=Q.front();Q.pop();
110       TopOrder[cnt++]=V;
111       for(E=Graph->G[V].first_edge;E;E=E->Next)
112       {
113           temp=E->Weight;
114             //这里只有一句话,只能计算工程完成要多久,如果深入,编写出其
115             //是否有机动组
116           S[E->Adjv]=S[V]+temp> S[E->Adjv]?S[V]+temp:S[E->Adjv];
117           if(--Indegree[E->Adjv]==0)
118                Q.push(E->Adjv);
119       }
120   }
121      if(cnt!=Graph->Vernum)
122            Total=-1;
123      else
124          Total=S[(cnt-1)];
125     return Total;
126 }
127 int main()
128 {
129     int N,M;
130     cin>>N>>M;
131 Graph=BuildMyGraph(N,M);
132     int Total=0;
133     Total =TopSort(Total);
134     if(Total!=-1)
135     {
136         cout<<Total<<endl;
137     }
138     else
139     {
140         cout<<"Impossible"<<endl;
141     }
142     return 0;
143 }                                                                            

时间: 2024-11-07 22:13:12

08-图8 How Long Does It Take的相关文章

ISE和Modelsim联合仿真(转)

ISE和Modelsim联合仿真(转) 地址:http://www.cnblogs.com/feitian629/archive/2013/07/13/3188192.html 相信很多人会遇到过这个问题,不知如何让ISE调用Modelsim进行仿真.我也迷糊了不少时间,查查找找,终于弄明白了,所以有了本文,和大家分享一下.我尽量讲得详细点儿,多多上图. 我的环境:Windows 7 64位,Xilinx ISE Design Suite 13.4(D:\Xilinx\13.4),Modelsi

Server2008Web修改密码

在Windows 2003 IIS中自带修改域用户密码的ASP网页文件iisadmpwd模块,可以通过Web方式修改域用户密码.但是IIS 7上不再支持iisadmpwd功能,正常安装Windows Server 2008及IIS将不会有iisadmpwd模块.如果我们要让Server 2008拥有Web修改密码的功能,应该怎么做呢?    测试环境: 1)Server2003需要装有WebIIS角色 2)Server2008DC+CA+WebIIS Server2003的iisadmpwd文件

3Dx Max制作月光下的城堡CG场景

"Points of View"是一项点评从不同角度和视点能得实物的对比和不同的视觉感受的作品的名字.我设计绘景,以阐明这一论点,混合了一切强大和浪漫的光线,以提供一个对比感强烈的未来“冰冷”城市.接着我开始图像绘景,把我的想法转移到纸上.通常我都是围绕主题以铅笔绘制开始的,研究各个元素的位置,以得到一个动态的组合物.但是在绘景过程中我只在Photoshop中研究了概念,因为我已经有了一张与之相关的由Davide Scridel拍的照片.推荐学习3D MAX基础精讲 在明白了我所想沟通

克同极用后管期果要议向中如极示听适VybVfesyhpR

社保划到税务征收,将大大提升社保费的征管效率.税务的征管能力是目前而言最强的,以后税务征收社保不是代收,属于本职了. 之前税局要把社保信息和交个税的工资比对起来有困难!现在好了,个税是自己的,社保也是自己的,比对困难?不存在的! 这一变革,会给那些不给员工上社保.不全额上社保的企业致命一击! 最新案例 前段时间的发改委关于限制特定严重失信人乘坐民航的一则意见--发改财金[2018]385号,其中还有税务总局的联合署名. http://weibo.com/20180408PP/2309279811

百度哈斯发卡号是减肥哈卡斯加分了卡斯

http://www.ebay.com/cln/ta_ya20/-/167521224015/2015.02.08 http://www.ebay.com/cln/p-m6466/-/167398283011/2015.02.08 http://www.ebay.com/cln/ta_ya20/-/167521242015/2015.02.08 http://www.ebay.com/cln/p-m6466/-/167398294011/2015.02.08 http://www.ebay.co

利用filter实时切换big5和gb2312,以及gb2312的简繁体

IEEE Spectrum 杂志发布了一年一度的编程语言排行榜,这也是他们发布的第四届编程语言 Top 榜. 据介绍,IEEE Spectrum 的排序是来自 10 个重要线上数据源的综合,例如 Stack Overflow.Twitter.Reddit.IEEE Xplore.GitHub.CareerBuilder 等,对 48 种语言进行排行. 与其他排行榜不同的是,IEEE Spectrum 可以让读者自己选择参数组合时的权重,得到不同的排序结果.考虑到典型的 Spectrum 读者需求

俑烟汲的诿樟透磺勒秤窗mvus

IEEE Spectrum 杂志发布了一年一度的编程语言排行榜,这也是他们发布的第四届编程语言 Top 榜. 据介绍,IEEE Spectrum 的排序是来自 10 个重要线上数据源的综合,例如 Stack Overflow.Twitter.Reddit.IEEE Xplore.GitHub.CareerBuilder 等,对 48 种语言进行排行. 与其他排行榜不同的是,IEEE Spectrum 可以让读者自己选择参数组合时的权重,得到不同的排序结果.考虑到典型的 Spectrum 读者需求

08一地形编辑&amp;自制贴图导入--《程序员学Unity3d》

要制作出漂亮实用的地形可不简单啊,目前只知道大概怎么做而已.考虑到效率问题,一般会自己制作贴图导入来使用. PS贴图制作,导入Unity3d

08第二种定时器_封装动画函数_轮播图_offset系列

前面复习: 下面会说第二种定时器. 第二种定时器: 第一种的定时器回顾: 另一个定时器 setTimeout() 它是一个一次性的定时器: 因为,代码是从上往下执行的,btn 还没有生成,所以getElementById("btn").onclick = 肯定是会报错的. 它是一次性的定时器,如果没有取消的话,它会一直占着空间,所以一般都要写按钮btn 去取消timeId  . 1 <!DOCTYPE> 2 <html lang="en">

【测绘图槽】08 测绘中铿锵玫瑰

突然想做个关于我们测绘行业的女同胞们视频,想赞美她们投身建设祖国的事业的身影,咱们她们不怕苦的精神. 可是限于素材有限只能从网络收集点照片,一次献给测绘行业的女同胞们 测绘中铿锵玫瑰 老王免费帮大家做自己的视频专辑 测量空间素材不限形式,可以是你们测量队从接到任务,整理出发,工作中的细节,回来时候那种疲惫,等等,能展现一个主题的就行了. 照片视频素材请打包通过邮箱发送到  [email protected] (请注明是否能传送至优酷等网络视频空间,供大家欣赏!)