아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

퓨처라마

시간 제한1초메모리 제한128 MB

요약
N명의 고객 사이에서 이미 수행된 M번의 서로 다른 정신 교환 기록이 주어질 때, 두 개의 추가 신체를 활용해 모든 정신을 제자리로 되돌리는 최소 교환 횟수를 구한다.
난이도

보통10점 중 7점

유형
그래프, 그리디, 수학, 시뮬레이션
정답자
아직 제출이 없습니다

문제

배경은 애니메이션 퓨처라마 시즌 6의 10화 The Prisoner of Benda다.

판스워스 교수가 만든 정신 교환 장치는 몸 두 개를 지정하면 그 안에 든 정신을 서로 바꿔 넣는다. 다만 설계 결함이 하나 있다. 이미 정신을 맞바꾼 몸 두 개에는 같은 장치를 다시 쓸 수 없다.

이 결함에서 장사가 하나 생겼다. 뒤엉킨 정신을 견디다 못한 손님 무리가 원래대로 돌려 달라고 부르면, 테이트와 딕슨이 자기 몸과 새 장치를 들고 온다. 새 장치에는 사용 기록이 없다. 그래서 복구 작업에서는 이미 교환에 쓰인 몸 짝도 다시 한 번 교환할 수 있고, 테이트와 딕슨의 몸을 끼워 넣어도 된다.

요금은 교환 한 번 단위로 붙는다. 그래서 두 사람은 견적을 내기 전에 최소 몇 번이면 끝나는지 알아야 한다. 손님이 지금까지 수행한 교환 기록이 주어질 때, 모든 정신을 원래 몸으로 되돌리는 데 필요한 교환의 최소 횟수를 구하라.

입력

입력은 테스트 케이스 여러 개로 이루어진다.

각 테스트 케이스의 첫 줄에 정수 NN과 MM이 공백으로 구분되어 주어진다 (1≤N≤100,0001 \le N \le 100{,}000, 0≤M≤100,0000 \le M \le 100{,}000). NN은 손님 수이고, 손님의 몸에는 0,1,2,…,N−10, 1, 2, \dots, N-1번이 붙어 있다. 테이트의 몸은 NN번, 딕슨의 몸은 N+1N+1번이다. MM은 장치가 이미 수행한 교환 횟수다.

다음 줄에 정수 2M2M개가 공백으로 구분되어 주어진다.

a0, b0, a1, b1, …, aM−1, bM−1a_0,\ b_0,\ a_1,\ b_1,\ \dots,\ a_{M-1},\ b_{M-1}

1≤j≤M1 \le j \le M인 jj에 대해, jj번째 교환에서 몸 aj−1a_{j-1}과 bj−1b_{j-1}에 든 정신이 서로 바뀌었다는 뜻이다. 이미 수행된 교환에는 테이트와 딕슨이 참여하지 않았고, 주어지는 몸 짝 MM개는 모두 서로 다르다.

마지막 줄에는 00 하나만 주어진다. 이 줄은 테스트 케이스가 아니므로 처리하지 않는다.

출력

각 테스트 케이스마다 모든 정신을 원래 몸으로 되돌리는 데 필요한 교환의 최소 횟수를 한 줄에 출력한다. 이미 전부 제자리에 있으면 00을 출력한다.

예제2

  1. 예제 1

    입력
    4 3
    0 1 2 3 0 2
    4 6
    0 1 2 3 0 2 1 3 0 3 1 2
    100000 0
    
    100000 1
    0 1
    100000 1
    0 1
    0
    
    예상 출력
    3
    0
    0
    1
    1
    
  2. 예제 2

    입력
    3 2
    0 1 1 2
    0
    
    예상 출력
    2