Ну, ваша реализация наихудшая из возможных: чтобы найти входные / выходные ребра, вы должны пройти по всему графику.
Вам действительно нужен список дуг?Обычно список смежности гораздо более эффективен.
Наивной реализацией списка смежности будет сохранение вектора> дуг, где размер дуги - это число узлов.
Учитываяузел u, arcs [u] дает вам все ребра.Вы можете выяснить, как оптимизировать его для ребер.