#P3678. Katu Puzzle

    ID: 2679 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>图结构数据结构ST表POJ Founder Monthly Contest – 2008.07.27Dagger

Katu Puzzle

题目描述

描述

Katu Puzzle 是一个有向图 G(V,E)G(V, E),其中每条边 e(a,b)e(a, b) 都标有一个布尔运算符 opopANDANDORORXORXOR)和一个整数 cc0c10 \leq c \leq 1)。如果能够为每个顶点 ViV_i 分配一个值 XiX_i0Xi10 \leq X_i \leq 1),使得对于每条标有运算符 opop 和值 cc 的边 e(a,b)e(a, b),满足以下等式:

Xa op Xb=cX_a \ op \ X_b = c

那么这个 Katu Puzzle 就是可解的。布尔运算的规则如下:

  • ANDAND

    0 AND 0=00 \ AND \ 0 = 0 0 AND 1=00 \ AND \ 1 = 0 1 AND 0=01 \ AND \ 0 = 0 1 AND 1=11 \ AND \ 1 = 1
  • OROR

    0 OR 0=00 \ OR \ 0 = 0 0 OR 1=10 \ OR \ 1 = 1 1 OR 0=11 \ OR \ 0 = 1 1 OR 1=11 \ OR \ 1 = 1
  • XORXOR

    0 XOR 0=00 \ XOR \ 0 = 0 0 XOR 1=10 \ XOR \ 1 = 1 1 XOR 0=11 \ XOR \ 0 = 1 1 XOR 1=01 \ XOR \ 1 = 0

给定一个 Katu Puzzle,你的任务是判断它是否可解。

输入

第一行包含两个整数 NN1N10001 \leq N \leq 1000)和 MM0M1,000,0000 \leq M \leq 1,000,000),分别表示顶点数和边数。
接下来的 MM 行,每行包含三个整数 aa0a<N0 \leq a < N)、bb0b<N0 \leq b < N)、cc 和一个运算符 opop,描述每条边。

输出

输出一行,包含 "YESYES" 或 "NONO"。

示例输入

4 4  
0 1 1 AND  
1 2 1 OR  
3 2 0 AND  
3 0 0 XOR  

示例输出

YES  

提示

一种可行的解是:
X0=1X_0 = 1, X1=1X_1 = 1, X2=0X_2 = 0, X3=1X_3 = 1

来源

POJ Founder Monthly Contest – 2008.07.27, Dagger