Define the state to be (indexOfMale,BitMaskOfChosenGirls). The basic idea is to iterate over the set of males until a choice has been made for each one of them. Which means that we look for the possible match for a guy with a girl if she’s not in the
bitmask => if she’s available then set that bit and go for the next guy(index). This way try with all the indices associated with the current
indexOfMale. Count 1 if a choice could be made for every guy.
f(idx,mask) = 1 if idx==N = f(idx+1,mask|(1<<k)) if(mask[k] is not set) for all k in adj[idx]
Complexity would be