Kuhn's algorithm repeatedly finds augmenting paths until none exist. Start with an empty matching, then for each unmatched vertex in , try to find an augmenting path using DFS. This is distinct from the Hungarian algorithm, which solves weighted assignment problems.
This runs in time: you do iterations of DFS, each taking time. This is fast enough for most problems with .
Space complexity is for the data structures used.