I think there might be some incorrect statements about the BFS solution.

First of all, I don't think it should be called BFS solution. I think you basically used Kahn’s algorithm here. However, I did not found BFS is mentioned in that link.

BFS, in my opinion, decide the order of visited nodes. For example, if we have course A and B which both have zero indegree at first, and put them into queue. Let's say we take course A out first, and A have two neighbors C, D. After we reduce C and D's indegree by 1, they both have zero indegree and will be put into queue. In this case, we should visit C and D before B, and that's how BFS works.

While in Khan's algorithm, we visit B before C and D, which to me, it is not breadth-first because BFS should visit one node's neighbors after visit that node.

Second, your solution is slightly different to Khan's algorithm, and I think the way Khan push all zero-indegree nodes into queue at first is more efficient.