usando topological sorting para ordenar eventos considerando suas dependências