트랙 한 바퀴 돌기
시간 제한1초메모리 제한128 MB
각 차수가 4인 정점에서 네 간선을 두 쌍으로 묶는 방식을 정해야 하며, 모든 간선을 한 번씩 지나는 오일러 회로의 총 회전량을 최소화하는 문제다.
문제
The Stig의 정체가 밝혀지면서, 인기 자동차 프로그램 Top Gear는 그를 대신할 침착하고 정체를 숨긴 새 드라이버가 급히 필요해졌고, 그 자리를 당신이 맡게 되었습니다. 하지만 당신은 빠르게 달리는 것을, 특히 구불구불한 트랙에서 달리는 것을 별로 좋아하지 않습니다. 이를 덜어 주려고 알고리즘을 잘 아는 친구가, 꺾는 양(회전량)이 가장 적은 왕복 경로를 계산해 보라고 제안했습니다.
트랙은 서로 겹치지 않는 곧은 도로(간선)들로 이루어져 있고, 각 교차점(정점)에서는 항상 정확히 개 또는 개의 도로가 뻗어 나옵니다. 왕복 경로는 오일러 회로여야 합니다. 즉 모든 도로를 정확히 한 번씩 지나 출발한 곳으로 되돌아와야 합니다(이러한 회로는 입력 그래프에 항상 존재함이 보장됩니다). 총 회전량은 각 정점에서의 회전량을 모두 더한 값이며, 정점을 곧게(직진으로) 통과하면 그 회전량은 입니다. 도로는 어느 방향으로든 달릴 수 있습니다.
한 정점에서 어떤 도로로 들어와 다른 도로로 나갈 때의 회전량은 진행 방향이 바뀐 각도(라디안)의 절댓값입니다. 두 도로가 이루는 각을 라 하면 회전량은 이며, 직진()이면 , 완전히 되돌아오는 U턴()이면 입니다. 차수가 인 정점은 회로가 두 번 지나가므로, 그 정점의 네 도로를 두 쌍으로 어떻게 짝지을지 고를 수 있습니다. 다만 전체 경로가 하나의 오일러 회로를 이루어야 한다는 조건은 지켜야 합니다.
입력
첫째 줄에 정점의 수 과 간선의 수 이 공백으로 구분되어 주어집니다.
다음 개의 줄에 각 정점의 , 좌표가 순서대로 주어집니다(). 모든 정점의 좌표 쌍은 서로 다릅니다.
다음 개의 줄에 두 정수 와 가 공백으로 구분되어 주어지며, 이는 정점 와 정점 를 잇는 간선을 뜻합니다. 정점 번호는 부터 시작합니다.
출력
오일러 회로를 완성하는 데 필요한 최소 총 회전량을 라디안 단위로, 소수점 아래 여섯 자리까지 반올림하여 출력합니다.
힌트

그림: 예제 2의 트랙을 나타낸 그림.