# Topological Kahn (Practice 5028): Practice
Interviewers use this pattern to test whether you can state the invariant before coding. Here is a compact rehearsal note.
## Approach
indegree queue.
```python
def topo(n,edges):
from collections import deque,defaultdict
g=defaultdict(list); ind=[0]*n
for u,v in edges: g[u].append(v); ind[v]+=1
q=deque([i for i in range(n) if ind[i]==0]); out=[]
while q:
u=q.popleft(); out.append(u)
for v in g[u]:
ind[v]-=1
if ind[v]==0: q.append(v)
return out if len(out)==n else []
```
## Complexity
Linear in the dominant input size for the scan; heap/tree variants add a log factor.
## Interview pitfalls
State the invariant out loud, name the complexity, then code. Skipping the invariant is the usual fail mode.
## Practicing out loud
Narrate the approach, complexity and one edge case in under a minute. Disclosure: I work on Linkjob AI, a real-time interview assistant. If you want live practice help, see [Linkjob AI interview assistant](https://www.linkjob.ai/).