Я считаю, что ответ Артема Казнатчеева правильный, но он не дает полиномиального пространства. Так что вот другой подход, который должен работать немного лучше в этом отношении.
Используя максимальный поток, можно решить чуть более общую проблему: найти пару непересекающихся путей ребер из некоторых двух вершин {s1, s2} к другой паре вершин {t1, t2}, но не контролируя, какая вершина источника соединена к какой вершине назначения.
Предположим, у нас есть граф G и вершины s1, s2, t1, t2, для которых мы хотим перечислить все пары путей. Найдите одну пару путей P1, P2, и пусть e = (s1, v) будет первым ребром на одном из этих путей. Затем мы можем разбить проблемное пространство на две подзадачи: пары путей, которые используют e, совпадают с путями из {v, s2} в {t1, t2} в G-s1, и пары путей, которые не используют e такие же, как пути из {s1, s2} в {t1, t2} в Ge. Выполните повторение в этих двух подзадачах и (чтобы избежать дублирования) сообщайте путь только тогда, когда вы находитесь в нижней части рекурсии.