题意:
有n个家务,第i个家务需要一定时间来完成,并且第i个任务必须在它 “前面的” 某些任务完成之后才能开始。
给你任务信息,问你最短需要多少时间来完成任务。
输入:
第一行n个家务
第2~n+1行:每行第一个数字:完成这件家务所用的时间。
第二个数字:需要前面几个家务才能做这件。
随后是家务的编号
思路:
chore K (K > 1) can have only chores 1,.K-1 as prerequisites
这不就成超级无敌大水题了嘛。
每回找到编号前面的最大值。 更新一下就OK了。
// by SiriusRen
#include <cstdio>
#include <algorithm>
using namespace std;
int n,time[10005],jy,xx,ans=0;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&time[i]);
scanf("%d",&jy);
int temp=0;
while(jy--)
scanf("%d",&xx),temp=max(time[xx],temp);
time[i]+=temp;
}
for(int i=1;i<=n;i++)ans=max(ans,time[i]);
printf("%d
",ans);
}