n개의 반직선과 두 점 s, t가 주어질 때, s에서 t로 가는 곡선이 반드시 지나야 하는 반직선의 최소 개수를 구한다.
보통7기하그래프최단 경로아직 제출이 없습니다시간 제한2초메모리 제한512 MB
너는 반 친구 여러 명과 게임을 한다. 상대는 저마다 레이저를 쏘는 장치를 하나씩 들고 있다. 레이저는 그 상대가 서 있는 자리에서 출발해 상대가 고른 방향으로 끝없이 뻗어 나간다. 모든 레이저의 방향이 정해지고 고정되면 네 차례가 시작된다. 너는 점 s에 서 있고 점 t까지 달려가야 하는데, 달리는 경로가 레이저를 가로지르는 횟수를 가장 적게 만들고 싶다.
경기장은 이차원 평면이다. 상대 n명 o1,o2,…,on은 서로 다른 n개의 점 p1,p2,…,pn에 서 있고, 상대 oi는 pi에서 한쪽 방향으로만 레이저를 쏜다. 서로 평행한 레이저가 있어도 된다. 점 s와 t는 모든 pi와 다르다.
경로는 s에서 t로 이어지는 곡선이면 무엇이든 된다. 경로가 어떤 레이저의 한쪽에서 반대쪽으로 넘어가면 그 레이저를 가로지른 것이다. i번 레이저는 pi와 거기서 정해진 방향으로 나아간 점만 덮으므로, pi를 돌아 레이저가 덮지 않는 쪽으로 지나가는 경로는 i번 레이저를 가로지르지 않는다.
s에서 t까지 가는 경로가 가로질러야 하는 레이저 개수의 최솟값을 구하라.
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 레이저의 개수 n이 주어진다 (1≤n≤200). 이어지는 n개의 줄에는 공백으로 구분된 정수 네 개가 주어진다. 앞의 두 개는 상대가 서 있는 점의 x좌표와 y좌표이고, 뒤의 두 개는 그 상대의 레이저 위에 있는 점의 x좌표와 y좌표다. 마지막 줄에는 정수 네 개가 주어지며, 차례로 s의 x좌표와 y좌표, t의 x좌표와 y좌표다.
한 테스트 케이스에서 주어지는 점 가운데 한 직선 위에 놓인 세 점은 없고, 좌표의 절댓값은 모두 108 이하다. 0 하나만 있는 줄이 입력의 끝을 알리며, 이 줄은 처리하지 않는다.
각 테스트 케이스마다 경로가 가로질러야 하는 레이저 개수의 최솟값을 한 줄에 출력한다.