햄스터
시간 제한4초메모리 제한1024 MB
격자 위에 놓인 단위 벽 M개가 주어질 때, Joe를 가둘 닫힌 고리를 만드는 데 필요한 벽의 최소 개수를 구합니다.
문제
햄스터 조는 투모로우 프로그래밍 스쿨에서 사랑받는 반려동물 중 하나이다. 생물학과는 학교의 중앙 로봇 CRESAI에게 조가 지낼 놀이울을 설계하고 짓는 일을 맡겼다. 놀이울은 학과 안에 새로 지정된 동물 공간에 놓인다. 이 공간은 평평한 수평면이고, 단위 길이 정사각형 타일이 깔려 직사각형 격자를 이룬다. 타일이 맞닿는 가장자리에는 홈이 파여 있다.
놀이울은 단위 길이 벽 조각으로 둘러싸인다. 각 벽 조각은 인접한 두 타일 사이의 홈에서 세워지며, 양 끝은 타일의 꼭짓점에 맞닿는다.
조는 두 타일 사이에 벽 조각이 없으면 현재 타일에서 인접한 타일로 이동할 수 있다. 조는 벽 조각을 뛰어넘거나 기어서 지나갈 수 없다. 또 이웃한 두 벽 조각 사이의 틈으로 몸을 밀어 넣거나 벽을 부수고 지나갈 수도 없다. 벽 조각을 적절히 배치하면 조가 빠져나갈 수 없는 울타리가 생긴다.
CRESAI는 각 벽 조각을 올바르게 놓았다. 즉 모든 벽 조각이 홈에 놓여 있고 양 끝이 타일의 꼭짓점과 맞는다. 하지만 대부분의 벽 조각이 무작위로 놓여 있어서, 어떤 모양이든 울타리가 생긴다는 보장이 없다.
생물학자들은 당장 문제를 해결하기 위해 추가로 설치해야 할 단위 길이 벽 조각의 최소 개수를 구하려고 한다. 이 벽 조각들은 사용되지 않은 홈 중 적절히 고른 위치에 설치되며, 크기와 모양에 상관없이 울타리를 완성한다. 최종 배치에서는 CRESAI가 설치한 벽 조각 중 일부가 쓸모없어질 수 있다.
입력
첫 줄에는 CRESAI가 설치한 벽 조각의 개수 ()이 주어진다. 이어지는 개의 줄에는 벽 조각 하나의 양 끝 좌표인 정수 가 한 줄에 하나씩 주어진다. 좌표축은 홈과 평행하며, 홈의 교차점 좌표는 모두 정수이다. 모든 좌표는 를 만족하고, 각 벽 조각은 을 만족한다.
출력
조가 빠져나갈 수 없는 울타리를 크기나 모양에 상관없이 만들기 위해 추가로 필요한 벽 조각의 최소 개수를 한 줄에 출력한다.