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:
YESnếu thỏa mãn,NOnế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