https://www.acmicpc.net/problem/25168
위상정렬 하면서
W가 7보다 크거나 같으면 +1을 취하고 max 연산을 한다.
사실 맞왜틀 열심히 해서 그냥 해설을 봤다... ㅎㅎ;;;
내가 생각한 문제랑 좀 달랐다
import sys
from collections import deque
r=sys.stdin.readline
n, m = map(int, r().split())
degree = [0]*(n+1)
l = [[] for _ in range(n+1)]
def solve():
q = deque([i for i in range(1, n+1) if degree[i]==0])
res = [1]*(n+1)
for i in range(1, n+1):
if not q:
break
x = q.popleft()
for e, w in l[x]:
degree[e]-=1
if w >= 7:
res[e] = max(res[e], res[x]+w+1)
else:
res[e] = max(res[e], res[x]+w)
if degree[e] == 0:
q.append(e)
return res
for _ in range(m):
s,e,w = map(int,r().split())
degree[e]+=1
l[s].append((e,w))
res=solve()
print(max(res))