n,m=map(int,input().split())
a=[0]+list(map(int,input().split())) #依赖
b=[0]+list(map(int,input().split())) #天数
c=[1 for i in range(m+1)] #最早开始时间
for i in range(1,m+1):
if a[i]!=0:
c[i]=c[a[i]]+b[a[i]]
print(*c[1:])
d=[[] for i in range(m+1)]
e=[0]+[n-b[i]+1 for i in range(1,m+1)] #最晚开始时间
for i in range(1,m+1):
if a[i]!=0:
d[a[i]].append(i)
for i in range(m,0,-1):
if len(d[i])!=0:
tm=[e[j] for j in d[i]]
e[i]=e[i]-(n-min(tm))-1
jg=[c[i]+b[i]-1 for i in range(1,m+1)]
if max(jg)<=n: #则输出最晚时间
print(*e[1:])
csp认证202212-1 第二题现值计算
最新推荐文章于 2025-12-13 11:28:09 发布
该篇文章介绍了如何使用Python编程解决一个任务调度问题,通过计算最早开始时间和最晚开始时间来确定最优任务执行顺序,考虑了任务间的依赖关系和限制条件。
1343





