08-图8 How Long Does It Take
来源:互联网 发布:mac好用的绘图 编辑:程序博客网 时间:2024/06/06 00:40
7-12 How Long Does It Take(25 分)
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 N (≤100), the number of activity check points (hence it is assumed that the check points are numbered from 0 to N−1), and M, the number of activities. Then M 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 120 1 60 2 40 3 51 4 12 4 13 5 25 4 04 6 94 7 75 7 46 8 27 8 4
Sample Output 1:
18
Sample Input 2:
4 50 1 10 2 22 1 31 3 43 2 5
Sample Output 2:
Impossible
#include<iostream>#include<queue>using namespace std;const int maxn=105,infinity=10000;int N,M,minTime[maxn] = {0},InDegree[maxn] = {0},TopNum[maxn] = {0},G[maxn][maxn] = {0};void ToplogicSort(){ int v,mark = 1,cnt = 0; queue<int>q; for(int i=0;i<N;i++){ if(!InDegree[i]){ q.push(i); cnt++; } } while(!q.empty()){ v = q.front(); TopNum[cnt] = v; q.pop(); for(int i=0;i<N;i++){ if(G[v][i] < infinity){ InDegree[i]--; minTime[i] = max(minTime[v] + G[v][i],minTime[i]); if(!InDegree[i]){ q.push(i); cnt++; } } } } int maxT = 0; if(cnt != N) cout<<"Impossible"<<endl; else{ for(int i=0;i<N;i++){ if(minTime[i] > maxT) maxT = minTime[i]; } cout<<maxT<<endl; }}int main(){ int a,b,l; cin>>N>>M; for(int i=0;i<N;i++){ for(int j=0;j<N;j++){ G[i][j] = infinity; } } for(int i=0;i<M;i++){ cin>>a>>b>>l; InDegree[b]++; G[a][b] = l; } ToplogicSort(); return 0;}
- 08-图8 How Long Does It Take
- MOOC PTA 08-图8 How Long Does It Take
- 08-图8 How Long Does It Take (25分)
- 08-图8 How Long Does It Take
- 08-图8 How Long Does It Take
- 08-图8 How Long Does It Take (25分)
- 08-图8 How Long Does It Take (25分)
- 08-图8 How Long Does It Take (25分)
- 08-图8 How Long Does It Take
- 拓扑排序-图8 How Long Does It Take
- How Long Does It Take
- PTA—08-图8 How Long Does It Take (25分)
- MOOC浙大数据结构 — 08-图8 How Long Does It Take (25分)
- 08-图8 How Long Does It Take (25分)
- 08-图8 How Long Does It Take(25 分)
- 08-图8 How Long Does It Take(25 point(s)) 拓扑排序
- 06-图7. How Long Does It Take (25)
- 06-图7. How Long Does It Take (25)
- Cloudera Manager5.13版本更新信息
- Alias.StudioTools.Techniques.Art.To.Part
- Linux命令的基础知识
- SpringSecurity自定义用户认证逻辑(二)
- 用指针交换两个数
- 08-图8 How Long Does It Take
- 线性和并行求解多个序列最长公共子序列(MLCS)算法学习笔记
- ArrayList源码分析
- Matlab使用笔记-uint8类型之间的运算的坑
- 软件需求分析文档模版
- Unity 凸包算法-切线算法
- 屏幕尺寸,分辨率,像素,PPI之间到底什么关系?
- 教你彻底学会动态规划——入门篇
- Gerrit安装配置