[POJ3678] Katu Puzzle | 2-SAT 入门

简介: Description Katu Puzzle is presented as a directed graph G ( V , E ) with each edge e ( a , b ) labeled by a boolean operator op (oneofAND,OR,XOR) and an integer c ( 0 ≤ c ≤ 1 ) . One Katu is solvable if one can find each vertex Vi a value X i ( 0 ≤ X i ≤ 1 )

Description
Katu Puzzle is presented as a directed graph G ( V , E ) with each edge e ( a , b ) labeled by a boolean operator op (oneofAND,OR,XOR) and an integer c ( 0 ≤ c ≤ 1 ) . One Katu is solvable if one can find each vertex Vi a value X i ( 0 ≤ X i ≤ 1 ) such that for each edge e(a, b) labeled by op and c, the following formula holds:
Xa op Xb = c
The calculating rules are:
AND 0 1
0 0 0
1 0 1
OR 0 1
0 0 1
1 1 1
XOR 0 1
0 0 1
1 1 0
Given a Katu Puzzle, your task is to determine whether it is solvable.
Input
The first line contains two integers N ( 1 ≤ N ≤ 1000 )and M,( 0 ≤ M ≤ 1 , 000 , 000 ) (0 ≤ M ≤ 1,000,000) indicating the number of vertices and edges.
The following M lines contain three integers a ( 0 ≤ a < N ) , b ( 0 ≤ b < N ), c and an operator op each, describing the edges.
Output
Output a line containing “YES” or “NO”.
Sample Input

相关文章
|
编译器 Linux PHP
C语言从入门到实战——预处理详解
C语言预处理是C语言编译过程的一个阶段,它在编译之前对源代码进行一系列的处理操作,包括宏替换、文件包含、条件编译等,最终生成经过预处理的代码,然后再进行编译。
240 0
在 Flutter 中如何使用 ChangeNotifierProvider 实现数据共享?
在 Flutter 中如何使用 ChangeNotifierProvider 实现数据共享?
|
达摩院 算法 决策智能
解决背包问题:组合优化的应用与建模方法
组合优化是数学优化的一支,专注于从有限集合中选取元素的最优化问题。它涉及将一组对象组合在一起,以满足特定条件并优化某个目标函数,即在所有可能的组合中找到最有利的一个。 本文将以一个简化的背包问题为例,来讲解采用数学规划的方法来解决背包这个组合优化问题。
|
存储 搜索推荐 程序员
配置Picgo图床之COS、OSS、Github图床
配置Picgo图床之COS、OSS、Github图床
|
Python
Python-字符串与注释
Python-字符串与注释
75 1
|
C++
C++中的friend 关键字
# C++中的友元 `friend` > 友元是用关键字声明的函数或类 类的非成员函数可以访问类的保护成员和私有成员(如果它被声明为类的友元),这是通过在外部函数声明的前面加上关键字`friend`完成的 声明方式 ```cpp friend <类型><友元函数名>(<参数表>); ``` ## 友元函数 > 友元函数只是一个普通的函数,而并非一个类的成员函数,它可以在任意地方调用,友元函数通过对象名来访问该类的私有成员或共有成员。 ```c++ #include<iostream> using namespace std; class MYclass { public:
165 0
|
消息中间件 编解码 Java
几种Java常用序列化框架的选型与对比
序列化与反序列化是我们日常数据持久化和网络传输中经常使用的技术,但是目前各种序列化框架让人眼花缭乱,不清楚什么场景到底采用哪种序列化框架。本文会将业界开源的序列化框架进行对比测试,分别从通用性、易用性、可扩展性、性能和数据类型与Java语法支持五方面给出对比测试。
几种Java常用序列化框架的选型与对比
|
JavaScript 前端开发
JavaScript动画函数封装
JavaScript动画函数封装
208 0
JavaScript动画函数封装
|
缓存 算法 安全
volatile和synchronized到底啥区别?多图文讲解告诉你
volatile和synchronized到底啥区别?多图文讲解告诉你
volatile和synchronized到底啥区别?多图文讲解告诉你