Hệ ràng buộc kéo theo

Xem dưới dạng PDF

Gửi bài giải


Điểm: 20
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
đầu vào: stdin
Đầu ra: stdout

Tác giả:
Kiểu bài tập

Trong một hệ thống suy luận logic, ta có \(N\) mệnh đề cơ bản và \(M\) quy tắc suy luận. Mỗi quy tắc có dạng "nếu \(a\) đúng thì \(b\) đúng" (ký hiệu \(a \Rightarrow b\)), trong đó mỗi vế là một mệnh đề hoặc phủ định của mệnh đề.

Hãy xác định xem có tồn tại cách gán giá trị đúng/sai cho các mệnh đề cơ bản sao cho tất cả các quy tắc suy luận đều được thỏa mãn hay không.

Định dạng đầu vào

  • Dòng đầu chứa hai số nguyên \(N\) và \(M\) (\(1 \le N \le 10^5\), \(1 \le M \le 2 \cdot 10^5\)).
  • \(M\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(a_i, b_i\) (\(-N \le a_i, b_i \le N\), \(a_i \neq 0\), \(b_i \neq 0\)). Một số dương \(x\) nghĩa là "mệnh đề \(x\)", số âm \(-x\) nghĩa là "phủ định của mệnh đề \(x\)". Quy tắc: nếu vế trái đúng thì vế phải đúng.

Định dạng đầu ra

  • In ra YES nếu có cách gán thỏa mãn, NO nếu không.

Ví dụ

Input:

3 4
1 2
-1 3
2 -3
-2 3

Output:

YES

Nhận xét

Không có ý kiến tại thời điểm này.