题目:https://www.luogu.org/problemnew/show/P1113
每个任务的时间就是准备工作中完成最晚的那个的时间再加上自己的时间。
代码如下:
#include<iostream> #include<cstdio> using namespace std; int n,t[10005],p[10005][105],cnt[10005],tim[10005]; int main() { scanf("%d",&n); for(int i=1,x;i<=n;i++) { scanf("%d",&x); scanf("%d",&tim[i]); while(1) { scanf("%d",&x); if(x==0)break; p[i][++cnt[i]]=x; } } for(int i=1;i<=n;i++) { int mx=0; for(int j=1;j<=cnt[i];j++) mx=max(mx,t[p[i][j]]); t[i]=tim[i]+mx; } int mx=0; for(int i=1;i<=n;i++)mx=max(mx,t[i]); printf("%d",mx); return 0; }