Параллельные вселенные

Назовём граф, который надо сделать связным первым, а граф, связность которого нельзя нарушать, вторым.

Предположим, что второй граф содержит ребро $$$(v, u)$$$ такое, что вершины $$$v$$$ и $$$u$$$ лежат в одной компоненте связности первого графа. Тогда рассмотрим любую вершину $$$a$$$ лежащую в другой компоненте связности первого графа. Заметим, что одна из операций $$$(v, a)$$$ и $$$(u, a)$$$ не нарушает связность второго графа. Таким образом, можно сделать одну операцию так, чтобы компонента вершины $$$a$$$ объединилась с компонентой вершин $$$v$$$ и $$$u$$$, что позволяет решить задачу.

Теперь заметим, что если существует пара вершин $$$v$$$ и $$$u$$$, что в обоих графах нет ребра $$$(v, u)$$$, то можно сделать операцию с этой парой вершин, после чего задача сведётся к предыдущему случаю.

Если такого ребра тоже не нашлось, то все компоненты связности первого графа — клики, а второй граф содержит все рёбра, которых нет в первом графе.

Теперь выделим любую компоненту связности первого графа, размер которой не меньше $$$2$$$ (если такой нет, то сделаем операцию с любой парой вершин, после чего такая компонента связности появится). Выделим в этой компоненте связности произвольные вершины $$$a$$$ и $$$b$$$. Кроме этого из всех других компонент связности первого графа выделим по одной вершине $$$v_1,\ v_2,\ \ldots,\ v_k$$$.

Заметим, что если первый граф содержит хотя бы три компоненты связности или каждая компонента связности имеет размер хотя бы $$$2$$$, то подойдёт такая последовательность операций: $$$(a, v_1),\ (b, v_2),\ (b, v_3),\ \ldots,\ (b, v_k)$$$.

Если это не так, то первый граф содержит изолированную вершину $$$c$$$, в то время, как все остальные вершины образуют клюку. Второй граф в этом случае имеет вид звезды. В этом случае, если $$$n=3$$$, то ответа нет, а иначе можно выбрать любую пару вершин $$$a$$$ и $$$b$$$ отличных от $$$c$$$ и сделать две операции $$$(a, b)$$$ и $$$(a, c)$$$.

Это позволяет решать задачу за $$$\mathcal{O}(n + m_1 + m_2)$$$ или $$$\mathcal{O}\left((n + m_1 + m_2) \log(m_1 + m_2)\right)$$$ в зависимости от реализации.