[백준] 25168 - 게으른 아리를 위한 접종 계획

안우진·2024년 4월 9일
0

백준

목록 보기
18/21

[문제]


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))

0개의 댓글