Починка цепочки
시간 제한2초메모리 제한1024 MB
고리들의 초기 연결 상태가 주어질 때, 1-2-...-n 사슬만 남기기 위해 필요한 최소 열기/다시 닫기 동작 수를 구한다.
문제
У Совуньи была цепочка, состоявшая из звеньев, пронумерованных от до . Но пока цепочка валялась в комоде, она вся запуталась. Совунья хочет исправить ситуацию.
Каждое звено представляет из себя кольцо из проволоки. Каждые два звена либо сцеплены друг с другом, либо нет. Совунья обратилась за помощью к Пину. Он может делать два действия:
- Расковать одно из звеньев. При этом, оно перестает быть замкнутым кольцом, и поэтому его можно отсоединить от всех остальных звеньев.
- Обратно запаять раскованное ранее звено. При этом, оно обратно становится замкнутым кольцом. Пин может выбрать произвольное множество других звеньев, продеть через них текущее звено перед запайкой, и таким образом сцепить это звено с каждым звеном из выбранного множества.
В конце все звенья должны быть запаянными.
Совунья хочет, чтобы звено номер было сцепленно со звеном номер , с , \dots, с . Иными словами, чтобы были сцеплены звенья с номерами и для всех . А никакие другие пары звеньев не должны быть сцеплены.
Помогите Пину определить минимальное количество действий, которые ему придется выполнить, чтобы починить цепочку.
입력
В первой строке даны два целых числа и --- количество звеньев и количество пар изначально сцепленных звеньев (, ).
В следующих строках дано по два целых числа и --- номера сцепленных звеньев (; ).
Гарантируется, что во входных данных каждая неупорядоченная пара звеньев встречается максимум один раз.
출력
Выведите одно целое число --- минимальное количество действий, которые должен сделать Пин, чтобы починить цепочку.
힌트
В первом примере Пин может расковать звено номер . Тогда оно отсоединится от обоих оставшихся звеньев. А затем, запаять звено номер обратно, сцепив его только со звеном номер .
Во втором примере Пин может расковать звено номер , затем запаять его обратно соединив со звеньями и . А затем, расковать звено номер и запаять обратно, соединив со звеньями и .