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
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