그래프 방향 확인
간선이 상태 전이를 어느 방향으로 밀어야 하는지 문제 문장과 맞춘다.
역방향으로 풀면 base case가 뒤집힌다DAG에서 DP를 하는 이유는 모든 선행 상태가 계산된 뒤 현재 상태를 갱신할 수 있기 때문이다. 사이클이 있거나 도달 불가 초기값을 잘못 두면 최장 경로, 경우의 수, 최소 비용이 모두 그럴듯한 오답으로 무너진다.
간선이 상태 전이를 어느 방향으로 밀어야 하는지 문제 문장과 맞춘다.
역방향으로 풀면 base case가 뒤집힌다indegree를 쓰는 Kahn 방식이나 DFS 종료 순서로 사이클 없는 순서를 만든다.
방문 수가 N보다 작으면 사이클을 의심한다시작점만 0 또는 1로 두고 도달 불가 노드는 INF나 0 등 의미 있는 값으로 남긴다.
모든 노드 0 초기화가 항상 맞지는 않다위상 순서대로 u를 꺼내 모든 u->v 간선에 대해 dp[v]를 갱신한다.
선행 상태가 먼저 계산되어 있다는 전제가 핵심이다특정 도착점인지, 모든 노드 중 최대/최소인지, 도달 가능한 노드만 보는지 결정한다.
도달 불가 값을 답에 섞지 않는다