거짓말쟁이와 진실만 말하는 소
면접 대비시간 제한1초메모리 제한128 MB
각 진술은 한 소가 다른 소를 정직하다거나 거짓말쟁이라고 말한 것이다. 모든 소에 모순 없이 참/거짓을 부여할 수 있는 가장 긴 진술 접두사의 길이를 구한다.
문제
한 농부가 소들과 오랜 시간을 보내면서 소들의 언어를 이해하게 되었다. 농부는 자신의 소 마리() 중 일부는 항상 진실만 말하고, 나머지는 항상 거짓말만 한다는 사실을 알아차렸다.
농부는 소들이 한 개의 진술()을 받아 적었다. 각 진술은 다음 두 형태 중 하나이다.
x y T— 소 가 "소 는 항상 진실만 말한다"라고 주장한다.x y L— 소 가 "소 는 항상 거짓말만 한다"라고 주장한다.
모든 진술은 서로 다른 두 소에 대한 것이며, 같은 소 쌍이 여러 진술에 등장할 수 있다.
농부는 일부 진술을 잘못 받아 적었을 수도 있다고 의심한다. 따라서 개의 진술 모두와 모순되지 않도록 각 소를 '진실만 말하는 소' 또는 '거짓말쟁이'로 정하는 방법이 존재하지 않을 수도 있다. 목록을 최대한 살리기 위해, 앞에서부터 개의 진술과 모순되지 않는 소들의 배정이 존재하도록 만들 수 있는 가장 큰 의 값을 구하여라.
입력
- 첫째 줄: 공백으로 구분된 두 정수 과 .
- 둘째 줄부터 째 줄까지: 각 줄은
x y T또는x y L형태이며, 소 가 소 에 대해 한 진술 하나를 나타낸다 (, ).
출력
- 첫째 줄: 마리 소를 '진실만 말하는 소' 또는 '거짓말쟁이'로 배정했을 때 앞에서부터 개의 진술과 모순되지 않게 만들 수 있는 가장 큰 의 값.
힌트
예제에서 1번과 3번 진술은 동시에 성립할 수 없지만, 1번과 2번 진술은 동시에 성립할 수 있다. 소 1, 2, 3이 진실만 말하고 소 4가 거짓말쟁이라고 하면 된다.