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

Nhận xét

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