Mistake : Forgetting to reset the visited array between DFS calls. This causes the algorithm to miss augmenting paths and return a suboptimal matching. Mistake : Using the wrong graph structure (not bipartite).
Check for odd cycles first using BFS coloring. Mistake : Off-by-one errors in indexing. Make sure your matching array and adjacency list indices match your input format (-indexed vs -indexed).