LaLa와 정령 소환
시간 제한3초메모리 제한1024 MB
색이 겹치지 않도록 막대를 골라 평면에서 자유도가 가장 작은 구조의 자유도를 구합니다.
문제
의 여동생 가 의 정령 소환 을 돕고 있습니다.
가 자는 동안 는 소환할 정령의 시제품을 이미 만들어 두었습니다. 이 정령은 개의 관절과 개의 서로 다른 색깔의 막대로 이루어져 있습니다. 관절에 붙은 막대는 관절을 중심으로 자유롭게 움직입니다. 각 막대는 두 관절을 잇고, 소환하기 전에는 길이를 0 이상의 임의의 실수로 조정할 수 있습니다(소환한 뒤에는 조정할 수 없습니다).
정령 소환에 관해서라면 의 기준은 보다 훨씬 높습니다. 당연히 는 의 작업에 조금도 만족하지 않았습니다. 는 다음 조건을 만족하도록 일부 막대를 제거해서 시제품을 완성하려고 합니다.
- 정령이 아름다워야 합니다. 즉, 같은 색의 막대가 두 개 이상 남아 있으면 안 됩니다.
- 정령이 최대한 조종하기 쉬워야 합니다. 즉, 일부 막대를 제거하여 만들 수 있는 모든 아름다운 정령 중에서 자유도가 최소여야 합니다. 모든 막대를 전부 제거하면 아름다운 정령이 되므로 최솟값은 항상 존재합니다. 자유도의 정확한 정의는 아래 주석을 참고하세요.
가 완성한 정령의 자유도를 계산하는 프로그램을 작성하세요.
입력
입력은 가 만든 시제품 정령을 나타내며, 다음 형식으로 주어집니다.
여기서 은 관절의 개수이며 0부터 까지 번호가 매겨집니다. 은 막대의 개수입니다. 각 정수 에 대해 번째 막대의 색은 이고, 관절 와 를 잇습니다.
입력은 다음 제약을 만족합니다.
- 입력의 모든 수는 정수입니다.
- 모든 정수 에 대해 이고 입니다.
같은 두 관절을 잇는 막대가 여러 개 있을 수 있습니다.
출력
가 완성한 정령의 자유도와 같은 정수 하나를 출력합니다.
힌트
직관적으로, 자유도는 평면에 놓인 정령에서 막대의 길이를 유지하는 운동 축의 개수입니다.
더 엄밀하게 말하면, 를 정령의 모든 관절에 평면 좌표를 할당한 것이라고 합니다(이를 배치라고 부릅니다). 이런 배치는 모든 좌표를 이어 붙여 의 원소로 볼 수 있습니다. 여기서 은 관절의 개수입니다.
는 막대 길이를 유지하면서 안에서 로부터 연속적으로 도달할 수 있는 배치들의 집합입니다. 즉, 의 각 원소 와 관절 , 를 잇는 각 막대에 대해, 와 사이의 유클리드 거리는 와 에서 같아야 합니다.
배치 의 자유도는 연속인 전단사 함수 가 존재하는 가장 작은 음이 아닌 정수 입니다. 여기서 는 의 연결된 부분집합입니다.
정령의 자유도는 이런 모든 배치 에 대한 자유도 중 최댓값입니다.
아래는 의 정령과 각 예제에 대해 최적 배치 하나 및 사상 를 차례로 보여줍니다.
-
,
아래 그림은 각 변수에 대응하는 5개의 자유도를 보여줍니다.

-
,
아래 그림은 각 변수에 대응하는 3개의 자유도를 보여줍니다.

-
,
여기서 , , 입니다.
왼쪽 그림은 각 변수에 대응하는 4개의 자유도를 보여줍니다. 변수 에 대응하는 운동은 강체 운동이 아닙니다. 오른쪽 그림은 에 대응하는 운동을 자세히 보여줍니다.

-
,
여기서 이고, 모든 정수 에 대해 입니다.
아래 그림은 각 변수에 대응하는 6개의 자유도를 보여줍니다.
