만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

도청

시간 제한8초메모리 제한512 MB

요약
거리 전화선 그래프의 간선 위에 청취 장치를 최소 개수로 설치해, 주어진 모든 통화 경로를 감청하도록 하는 문제입니다.
난이도

어려움10점 중 8점

유형
그래프, 그리디, 트리, 구현
정답자
아직 제출이 없습니다

문제

동네 감시 협회가 우리 거리에 감시 시스템을 설치하려고 하고, 여러분이 이 일을 돕고 있다. 최근 잇따라 일어난 개똥 사건의 범인을 찾기 위해서다.

이 시스템은 거리의 깡통 전화선에 다는 도청 장치로 이루어진다. 개똥 범인들이 언젠가는 실수로 전화에서 자기들이 저지른 짓을 이야기하리라는 생각이다. 각 도청 장치는 두 집을 잇는 전화선 하나에 달며, 그 전화선을 지나는 통화를 모두 가로챈다.

전화선 네트워크는 다음과 같다. 거리 한쪽에는 홀수 번호 집이, 반대쪽에는 짝수 번호 집이 있다. 홀수 번호 집 ii는 짝수 번호 집 i+1i + 1의 바로 맞은편에 있다. 거리 양쪽 모두 이웃한 두 집 사이에 직통 전화선이 있다. 이와 별도로 거리를 가로지르는 직통 전화선이 두 개 있는데, 둘 다 어떤 집과 그 바로 맞은편 집을 잇는다.

같은 쪽에 있는 두 집 사이의 통화는 반대편으로 건너가지 않고 두 집 사이를 곧바로 잇는 경로로 전달된다. 서로 반대편에 있는 두 집 사이의 통화는 거리를 가로지르는 두 직통 전화선 중 어느 쪽을 쓰는지 알려져 있다. 또한 지난 경험으로 거리에서 누가 누구와 연락하고 지내는지도 알고 있다. 우리는 모든 통화를 가로챌 수 있게 도청 장치를 달고 싶다. 즉, 서로 연락하고 지내는 두 사람마다 두 사람의 집 사이 경로 위에 도청 장치가 있어야 한다.

도청 장치는 꽤 비싸고 지난주 바비큐 파티에 예산을 거의 다 써 버렸다. 이 조건을 만족하는 데 필요한 도청 장치의 최소 개수를 구하라.

그림 I.1: 예제 입력 1의 전화선 네트워크. 집은 모두 14채로 양쪽에 7채씩 있고, 거리를 가로지르는 두 직통 전화선은 3번 집과 4번 집, 9번 집과 10번 집을 잇는다. 7번 집과 11번 집 사람은 연락하고 지내며, 둘의 통화는 9번 집을 거친다. 5번 집과 6번 집 사람도 연락하고 지내며, 둘의 통화는 7번, 9번, 10번, 8번 집을 거친다. 예제 입력 2도 비슷하지만 5번 집과 6번 집 사이의 통화가 3번 집과 4번 집 사이의 직통 전화선을 거친다.

입력

첫째 줄에 네 정수 nn, mm, c1c_1, c2c_2가 주어진다 (4≤n≤250 0004 \le n \le 250\,000, 1≤m≤500 0001 \le m \le 500\,000, 1≤c1<c2<n1 \le c_1 < c_2 < n). nn은 짝수이고 거리에 있는 집의 수이다. mm은 서로 연락하고 지내는 사람 쌍의 수이다. c1c_1과 c2c_2는 홀수이며, 거리를 가로지르는 두 전화선이 c1c_1번 집과 c1+1c_1 + 1번 집 사이, c2c_2번 집과 c2+1c_2 + 1번 집 사이를 잇는다는 뜻이다.

다음 mm개의 줄은 각각 1 이상 nn 이하인 서로 다른 두 정수 aa, bb로 시작하며, aa번 집 사람과 bb번 집 사람이 연락하고 지낸다는 뜻이다. 두 집이 거리의 서로 반대편에 있으면 그 뒤에 정수 c∈{c1,c2}c \in \{c_1, c_2\}가 하나 더 주어진다. 이는 aa와 bb 사이의 통화가 cc번 집과 c+1c + 1번 집 사이의 직통 전화선을 거친다는 뜻이다. 같은 쌍 {a,b}\{a, b\}는 입력에 많아야 한 번 나온다.

출력

필요한 도청 장치의 최소 개수 ll을 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    14 2 3 9
    7 11
    5 6 9
    
    예상 출력
    1
    
  2. 예제 2

    입력
    14 2 3 9
    7 11
    5 6 3
    
    예상 출력
    2