I\'m using the Lengauer and Tarjan algorithm with path compression to calculate the dominator tree for a graph where there are millions of nodes. The algorithm is quite complex
boost::lengauer_tarjan_dominator_tree_without_dfs might help.