진입 차수 계산
각 정점 앞에 남아 있는 선행 조건 수를 indegree 배열에 저장한다.
DAG에서는 간선이 한 방향으로만 진행되므로 먼저 계산되어야 할 정점을 확정할 수 있다. indegree와 dp 전이가 함께 움직인다.
각 정점 앞에 남아 있는 선행 조건 수를 indegree 배열에 저장한다.
queue에서 꺼낸 정점은 더 이상 기다릴 선행 작업이 없으므로 전이를 실행할 수 있다.
처리한 정점 수가 n보다 작으면 indegree가 0이 되지 못한 사이클이 남은 것이다.
for (int v : zero) q.push(v);
while (!q.empty()) {
int v = q.front(); q.pop(); order.push_back(v);
for (int to : g[v]) if (--indeg[to] == 0) q.push(to);
}