문제 9017
Lies of N
문제 설명
사람 N명이 둥글게 앉아 있다.
각 사람들은 다른 사람에 대해 ‘진실’ 혹은 ‘거짓’을 말한다.
하지만 문제는, 누가 진실을 말하는지, 누가 거짓말을 하는지는 아무도 모른다.
각 사람은 “A는 거짓말쟁이이다.” 혹은 “A는 진실을 말한다.”라는 형태의 발언을 한다.
단, 자기 자신에 대한 말은 절대 하지 않는다.
진실을 말하는 사람의 모든 말은 참이다.
거짓말쟁이의 모든 말은 거짓이다.
모든 사람은 진실 or 거짓 중 하나를 말한다.
모든 발언이 논리적으로 모순 없이 성립할 수 있는 사람들의 역할 배치를 찾아라.
즉, 각 사람을 “진실” 또는 “거짓”으로 나누는 배치 중 하나를 출력하라.
가능한 배치가 여러 개라면 진실을 우선시하여 정렬한 것을(진실 < 거짓)을 출력하라.
불가능하다면 “IMPOSSIBLE”을 출력한다.

각 사람들은 다른 사람에 대해 ‘진실’ 혹은 ‘거짓’을 말한다.
하지만 문제는, 누가 진실을 말하는지, 누가 거짓말을 하는지는 아무도 모른다.
각 사람은 “A는 거짓말쟁이이다.” 혹은 “A는 진실을 말한다.”라는 형태의 발언을 한다.
단, 자기 자신에 대한 말은 절대 하지 않는다.
진실을 말하는 사람의 모든 말은 참이다.
거짓말쟁이의 모든 말은 거짓이다.
모든 사람은 진실 or 거짓 중 하나를 말한다.
모든 발언이 논리적으로 모순 없이 성립할 수 있는 사람들의 역할 배치를 찾아라.
즉, 각 사람을 “진실” 또는 “거짓”으로 나누는 배치 중 하나를 출력하라.
가능한 배치가 여러 개라면 진실을 우선시하여 정렬한 것을(진실 < 거짓)을 출력하라.
불가능하다면 “IMPOSSIBLE”을 출력한다.

입력 설명
첫 번째 줄에 사람의 수 $N$과 발언의 수 $M$이 주어진다.
두 번째 줄부터 $M$줄 동안 발언의 정보가 주어진다.
발언의 정보는 $i$ $j$ $s$ 의 형태로 주어지며 $i$번째 사람은 $j$번째 사람이 진실 혹은 거짓말을 하고 있다고 말하는 것을 의미한다.
$(1 \leq N \leq 1000,\ \ 1 \leq M \leq 2000,\ \ 1\leq i,\ j\leq N)$, s는 ‘TRUTH’ 또는 ‘LIE’ 이다.
두 번째 줄부터 $M$줄 동안 발언의 정보가 주어진다.
발언의 정보는 $i$ $j$ $s$ 의 형태로 주어지며 $i$번째 사람은 $j$번째 사람이 진실 혹은 거짓말을 하고 있다고 말하는 것을 의미한다.
$(1 \leq N \leq 1000,\ \ 1 \leq M \leq 2000,\ \ 1\leq i,\ j\leq N)$, s는 ‘TRUTH’ 또는 ‘LIE’ 이다.
출력 설명
한 줄에 길이 N의 문자열을 출력하라.
i번째 문자는 ‘T’ (진실) 또는 ‘L’ (거짓)이다.
즉, “TTLTL”은
1번: 진실, 2번: 진실, 3번: 거짓, 4번: 진실, 5번: 거짓
과 같다.
만약 가능한 배치가 없다면 “IMPOSSIBLE”을 출력한다.
i번째 문자는 ‘T’ (진실) 또는 ‘L’ (거짓)이다.
즉, “TTLTL”은
1번: 진실, 2번: 진실, 3번: 거짓, 4번: 진실, 5번: 거짓
과 같다.
만약 가능한 배치가 없다면 “IMPOSSIBLE”을 출력한다.
입력 예시
3 3 1 2 TRUTH 2 3 LIE 3 1 LIE
출력 예시
TTL
힌트
입력 예시 2
2 2
1 2 TRUTH
2 1 LIE
출력 예시 2
IMPOSSIBLE
출력 예시 1
1을 참이라고 가정 시 2의 발언도 참이 되며 이에 따라 3의 “1이 거짓말을 한다.”라는 발언은 거짓이 된다. 따라서 1은 참을 말한 것이므로 모순 없이 성립한다. 또 1을 거짓이라고 가정 시 2의 말은 거짓이 되고 이에 따라 3의 말은 참이 되어 3의 “1은 거짓말을 한다.”도 모순 없이 가정과 성립한다. 즉 TTL과 LLT가 모두 가능하나 사전순으로 가장 빠른 것(진실 < 거짓)을 출력하라 하였으므로 TTL을 출력한다.
출력 예시 2
사람 1은 사람 2가 진실을 말한다고 했다. 만일 이가 참이라면 사람 2의 진술 “1은 거짓을 말한다.”가 참이 되어 서로 모순이다. 만일 1의 진술이 거짓이라면 사람 2의 진술은 거짓이 되어 사람 1은 참을 말하는 것이므로 이 경우에도 모순이 생긴다. 따라서 이 상황은 불가능하다.
2 2
1 2 TRUTH
2 1 LIE
출력 예시 2
IMPOSSIBLE
출력 예시 1
1을 참이라고 가정 시 2의 발언도 참이 되며 이에 따라 3의 “1이 거짓말을 한다.”라는 발언은 거짓이 된다. 따라서 1은 참을 말한 것이므로 모순 없이 성립한다. 또 1을 거짓이라고 가정 시 2의 말은 거짓이 되고 이에 따라 3의 말은 참이 되어 3의 “1은 거짓말을 한다.”도 모순 없이 가정과 성립한다. 즉 TTL과 LLT가 모두 가능하나 사전순으로 가장 빠른 것(진실 < 거짓)을 출력하라 하였으므로 TTL을 출력한다.
출력 예시 2
사람 1은 사람 2가 진실을 말한다고 했다. 만일 이가 참이라면 사람 2의 진술 “1은 거짓을 말한다.”가 참이 되어 서로 모순이다. 만일 1의 진술이 거짓이라면 사람 2의 진술은 거짓이 되어 사람 1은 참을 말하는 것이므로 이 경우에도 모순이 생긴다. 따라서 이 상황은 불가능하다.
출처
재능2025