topological sort — Software Engineer Interview Preparation