| Kotlin Heroes: Episode 13 |
|---|
| Закончено |
Дан неориентированный граф, изначально содержащий $$$n$$$ вершин и $$$m$$$ ребер. Вы можете проводить следующую операцию с этим графом:
Эту операцию можно совершать любое количество раз, пока в графе не существует вершины, соединенной ребрами напрямую со всеми остальными. Как только такая вершина появится, процесс завершается. В том числе, если в графе изначально существует подобная вершина, то нельзя совершить ни одной операции.
Ваша задача — посчитать минимальное и максимальное количество операций, которое вы можете применить.
В первой строке заданы два целых числа $$$n$$$ и $$$m$$$ ($$$1 \le n \le 2 \cdot 10^5$$$; $$$0 \le m \le \min(\frac{n(n - 1)}{2}, 2 \cdot 10^5)$$$).
Далее следуют $$$m$$$ строк, в $$$i$$$-й из которых заданы два целых числа $$$x_i, y_i$$$ ($$$1 \le x_i, y_i \le n$$$; $$$x_i \ne y_i$$$) — концы $$$i$$$-го ребра. Между каждой парой вершин существует не более одного ребра.
Выведите два целых числа — минимальное и максимальное количество операций.
5 71 23 22 43 51 45 14 3
1 4
4 31 21 31 4
0 0
200000 0
199999 199999
В первом примере кратчайшая последовательность операций — следующая:
Длиннейшая последовательность операций — следующая:
Во втором примере в графе уже есть вершина, соединенная со всеми остальными, поэтому операции выполнять нельзя.
В третьем примере в любом случае придется выполнить $$$199999$$$ операций, чтобы в графе осталась только одна вершина.
| Название |
|---|


