배열 정리하기

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

요약
1부터 N까지 값을 가진 두 배열 A, B에서 각 배열에 중복 값이 없도록 만드는 최소 스왑 횟수를 구하고 불가능하면 -1을 출력합니다.
난이도

보통10점 중 6점

유형
그래프, 유니온 파인드, 그리디
정답자
아직 제출이 없습니다

문제

1 이상 N 이하의 자연수로 이루어진 두 배열 A[1..N]과 B[1..N]이 있다. 각 인덱스 i에 대해 Swap(i) 연산을 한 번 수행하면 A[i]와 B[i]의 값을 서로 바꿀 수 있다.

목표는 두 배열을 정리하여 A 안에서도 같은 수가 두 번 이상 나오지 않고, B 안에서도 같은 수가 두 번 이상 나오지 않게 만드는 것이다.

가능한 한 적은 횟수의 Swap 연산으로 목표를 달성하라. 어떤 방법으로도 두 배열을 모두 중복 없이 만들 수 없다면 -1을 출력한다.

입력

첫째 줄에 자연수 N (1 <= N <= 100000)이 주어진다.

둘째 줄에는 A[1], A[2], ..., A[N]이 공백으로 구분되어 주어진다.

셋째 줄에는 B[1], B[2], ..., B[N]이 공백으로 구분되어 주어진다.

모든 원소는 1 이상 N 이하의 자연수이다.

출력

첫째 줄에 필요한 Swap 연산의 최소 횟수를 출력한다. 불가능하면 -1을 출력한다.

예제2

  1. 예제 1

    입력
    10
    3 2 7 4 6 5 3 9 1 1
    6 8 4 10 8 10 7 5 2 9
    
    예상 출력
    5
    
  2. 예제 2

    입력
    10
    3 1 4 1 5 9 2 6 5 3
    5 8 9 7 9 3 2 3 8 4
    
    예상 출력
    -1