Chuyển 2-CNF về đồ thị khả năng

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

Một biểu thức 2-CNF gồm \(N\) biến và M mệnh đề. Xây dựng đồ thị khả năng (implication graph) gồm 2N đỉnh, mỗi đỉnh biểu diễn một literal. Với mỗi mệnh đề \((a \lor b)\), thêm hai cạnh \((\neg a \rightarrow b)\) và \((\neg b \rightarrow a)\).

Hãy kiểm tra tính thỏa mãn của biểu thức 2-CNF, đồng thời đếm số cạnh của đồ thị khả năng và số thành phần liên thông mạnh.

Đị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\)).

Định dạng đầu ra

  • Dòng đầu: YES nếu thỏa mãn, NO nếu không.
  • Dòng thứ hai: số cạnh của đồ thị khả năng (số cạnh \(2M\)).
  • Dòng thứ ba: số SCC.

Ví dụ

Input:

2 2
1 2
-1 -2

Output:

YES
4
2

Ràng buộc & Subtasks

Subtask Điểm Ràng buộc
1 40% \(N, M \le 100\)
2 60% \(N, M \le 10^5\)

Nhận xét

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