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

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

수천 개의 섬

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

요약
0번 섬에서 출발해 다른 섬을 거쳐 0번 섬으로 돌아오는 여행을 찾습니다. 모든 카누를 처음 정박한 섬에 되돌리고 항해는 200만 번 이하로 해야 하며, 불가능하면 그렇다고 판정합니다.
난이도

어려움10점 중 9점

유형
그래프, DFS, 구현
정답자
아직 제출이 없습니다

문제

수천 개의 섬은 자바 해역에 있는 아름다운 섬들의 무리이다. 섬은 NN개이며, 0부터 N−1N - 1까지 번호가 붙어 있다.

섬 사이를 오갈 때 쓸 수 있는 카누가 MM대 있으며, 0부터 M−1M - 1까지 번호가 붙어 있다. 각 0≤i≤M−10 \le i \le M - 1에 대해, ii번 카누는 섬 U[i]U[i] 또는 섬 V[i]V[i]에 정박해 있거나, U[i]U[i]와 V[i]V[i] 사이를 운항 중일 수 있다. 구체적으로, ii번 카누가 섬 U[i]U[i]에 정박해 있으면 U[i]U[i]에서 V[i]V[i]로 운항할 수 있고, 운항이 끝나면 섬 V[i]V[i]에 정박한다. 마찬가지로 섬 V[i]V[i]에 정박해 있으면 V[i]V[i]에서 U[i]U[i]로 운항할 수 있고, 운항이 끝나면 섬 U[i]U[i]에 정박한다. 처음에 모든 카누는 자신의 섬 U[i]U[i]에 정박해 있다. 같은 두 섬 사이를 오가는 카누가 여러 대일 수 있고, 한 섬에 카누가 여러 대 정박할 수도 있다.

안전상의 이유로 카누는 운항할 때마다 정비가 필요하다. 그래서 같은 카누를 연속으로 두 번 운항할 수 없다. 즉, ii번 카누를 운항한 뒤에는 다른 카누를 운항해야만 ii번 카누를 다시 운항할 수 있다.

부 뎅클렉은 섬 몇 개를 여행하는 계획을 세우려 한다. 여행이 유효하려면 다음 조건을 모두 만족해야 한다.

  • 여행은 섬 0에서 시작해 섬 0에서 끝난다.
  • 섬 0이 아닌 섬을 최소 하나 방문한다.
  • 여행이 끝나면 모든 카누가 여행을 시작할 때와 같은 섬에 정박해 있다. 즉, 각 0≤i≤M−10 \le i \le M - 1에 대해 ii번 카누는 섬 U[i]U[i]에 정박해 있어야 한다.

부 뎅클렉이 운항 횟수가 최대 2 000 0002\,000\,000번인 유효한 여행을 찾도록 도와주거나, 유효한 여행이 없음을 판단하도록 도와야 한다. 이 문제의 제약 조건에서는 유효한 여행이 존재한다면, 운항 횟수가 2 000 0002\,000\,000번을 넘지 않는 유효한 여행도 존재함을 증명할 수 있다.

제한

  • 2≤N≤100 0002 \le N \le 100\,000
  • 1≤M≤200 0001 \le M \le 200\,000
  • 모든 0≤i≤M−10 \le i \le M - 1에 대해 0≤U[i]≤N−10 \le U[i] \le N - 1이고 0≤V[i]≤N−10 \le V[i] \le N - 1이다.
  • 모든 0≤i≤M−10 \le i \le M - 1에 대해 U[i]≠V[i]U[i] \ne V[i]이다.

예제1

  1. 예제 1

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