동치 증명
시간 제한2초메모리 제한128 MB
이미 증명된 함의들로 이루어진 방향 그래프에서 모든 명제가 서로 동치가 되도록 추가해야 할 최소 함의 개수를 구하는 문제입니다.
문제
위대한 수학자 김선영은 선형대수학 교과서를 집필하다가 다음 문제를 만들었다.
행렬 에 대하여 다음 명제들이 서로 동치임을 증명하여라.
- 의 역행렬이 존재한다.
- 임의의 행렬 에 대하여 는 유일한 해를 가진다.
- 임의의 행렬 에 대하여 는 해를 가진다.
- 의 해는 하나뿐이다.
이런 문제를 푸는 일반적인 방법은 함축(implication)의 사슬을 이용하는 것이다. 예를 들어 다음과 같이 증명할 수 있다.
(1)이면 (2)이고, (2)이면 (3)이며, (3)이면 (4)이고, 마지막으로 (4)이면 (1)이다. 이 네 개의 함축은 네 명제가 모두 동치임을 보여준다.
또 다른 방법은 (1)이면 (2)이고 (2)이면 (1)임을 보여 (1)과 (2)가 동치임을 증명하고, 같은 방식으로 (2)와 (3), (3)과 (4)가 각각 동치임을 증명하는 것이다. 하지만 이 방법은 무려 여섯 번의 함축을 필요로 한다.
김선영은 교과서를 쓰면서 수많은 명제가 동치임을 증명해야 하므로 이러한 비효율은 치명적이다. 되도록 적은 수의 함축만으로 명제들이 동치임을 증명할 수 있도록 도와주자.
일반적으로 개의 명제와 이미 증명된 개의 함축이 주어진다. 각 함축은 "명제 이 참이면 명제 도 참이다"를 뜻한다. 주어진 모든 명제가 서로 동치임을(즉, 어느 하나가 참이면 나머지도 모두 참임을) 증명하기 위해 추가로 증명해야 하는 함축의 최소 개수를 구하여라.
입력
첫째 줄에 테스트 케이스의 개수 ()가 주어진다.
각 테스트 케이스는 다음과 같이 주어진다.
- 첫째 줄에 명제의 개수 ()과 이미 증명된 함축의 개수 ()이 공백으로 구분되어 주어진다.
- 이어지는 개의 줄에 각각 두 정수 , (, )가 주어진다. 이는 "명제 이 참이면 명제 도 참이다"라는 이미 증명된 함축을 뜻한다.
출력
각 테스트 케이스마다 한 줄에 정수 하나를 출력한다.
주어진 모든 명제가 서로 동치임을 증명하기 위해 추가로 증명해야 하는 함축의 최소 개수를 출력한다.