만드는 중입니다

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

더 어려운 충족 가능성

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

난이도

아직 분류되지 않았습니다

정답자
아직 제출이 없습니다

문제

완전 한정 불리언 2-CNF 식은 Q1x1…Qnxn F(x1,…,xn)Q_1 x_1 \dots Q_n x_n \, F(x_1, \dots, x_n) 형태이다. 각 QiQ_i는 전칭 한정자 ∀\forall (모든) 또는 존재 한정자 ∃\exists (존재한다) 중 하나이다. FF는 mm개의 절 s∨ts \lor t의 논리곱(∧\land)이다. ss와 tt는 부정이 붙거나 붙지 않은 변수이며, 같은 변수일 수도 있다. 이 식에는 자유 변수가 없으므로 참 또는 거짓으로 평가된다.

다음 재귀 알고리즘으로 식을 평가할 수 있다.

  1. 한정자가 없으면 나머지 식의 값(참 또는 거짓)을 반환한다.
  2. 그렇지 않으면 z=0,1z = 0, 1에 대해 Fz=Q2x2…Qnxn F(z,x2,…,xn)F_z = Q_2 x_2 \dots Q_n x_n \, F(z, x_2, \dots, x_n)을 재귀적으로 평가한다.
  3. Q1=∃Q_1 = \exists이면 F0∨F1F_0 \lor F_1을 반환한다. Q1=∀Q_1 = \forall이면 F0∧F1F_0 \land F_1을 반환한다.

주어진 완전 한정 2-CNF 식들이 참인지 판정하라.

입력

첫 줄에 테스트 케이스의 수 tt (1≤t≤1051 \leq t \leq 10^5)가 주어진다. 각 테스트 케이스의 첫 줄에는 변수의 수 nn과 절의 수 mm (1≤n,m≤1051 \leq n, m \leq 10^5)이 주어진다. 다음 줄에는 한정자를 나타내는 길이 nn의 문자열 ss가 주어진다. sis_i가 A이면 QiQ_i는 ∀\forall이고, E이면 QiQ_i는 ∃\exists이다.

이어지는 mm개의 줄에는 각각 두 정수 uiu_i, viv_i (−n≤ui,vi≤n-n \leq u_i, v_i \leq n, ui,vi≠0u_i, v_i \neq 0)가 주어진다. ui≥1u_i \geq 1이면 절의 첫 번째 변수는 xuix_{u_i}이다. ui≤−1u_i \leq -1이면 첫 번째 변수는 x−uix_{-u_i}의 부정이다. 두 번째 변수도 viv_i로 같은 방식으로 나타낸다.

모든 테스트 케이스의 nn 합은 10510^5을 넘지 않으며, mm 합도 10510^5을 넘지 않는다.

출력

각 테스트 케이스마다 식이 참이면 TRUE, 거짓이면 FALSE를 출력한다.

힌트

첫 번째 예제는 식 ∀x1∃x2 (x1∨x2)∧(x1∨x2)=∀x1∃x2 x1⊕x2\forall x_1 \exists x_2 \, (x_1 \lor x_2) \land (x_1 \lor x_2) = \forall x_1 \exists x_2 \, x_1 \oplus x_2에 해당한다. 임의의 x1x_1에 대해 x2=x1x_2 = x_1로 고르면 식이 참이 되므로 식은 참이다. 두 번째 예제는 한정자의 순서를 바꾼 것이다. 이제 답은 FALSE이다. 임의의 x1x_1에 대해 x2=x1x_2 = x_1로 고르면 식이 거짓이 되기 때문이다. 세 번째 식은 ∀x1∃x2∀x3 (x1∨x2)∧(x1∨x3)\forall x_1 \exists x_2 \forall x_3 \, (x_1 \lor x_2) \land (x_1 \lor x_3)이다. x1=1x_1 = 1, x3=1x_3 = 1을 대입하면 x2x_2의 어떤 값으로도 두 번째 절을 참으로 만들 수 없으므로 식은 거짓이다.

예제1

  1. 예제 1

    입력
    3
    2 2
    AE
    1 -2
    -1 2
    2 2
    EA
    1 -2
    -1 2
    3 2
    AEA
    1 -2
    -1 -3
    
    예상 출력
    TRUE
    FALSE
    FALSE