AC代码
n,m=map(int,input().split())
if m==0:
print(-1)
else:
side=[0]*m
point=[[] for i in range(n+1)]
rud=[0]*(n+1)
dp=[-float("inf")]*(n+1)
for i in range(m):
side[i]=list(map(int,input().split()))
point[side[i][0]].append(i)
rud[side[i][1]]+=1
queue=[]
for i in range(1,n+1):
if rud[i]==0:
queue.append(i)
dp[1]=0
while len(queue)!=0:
fr=queue.pop(0)
for i in range(len(point[fr])):
s=point[fr][i]
p=side[s][1]
dp[p]=max(dp[p],dp[fr]+side[s][2])
rud[p]-=1
if rud[p]==0:
queue.append(p)
if dp[n]==-float("inf"):
print(-1)
else:
print(dp[n])
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务