#787. Bán liên thông lớn nhất (SEMI)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Một đồ thị có hướng G = (V,E) được gọi là bán liên thông (Semi-Connected) nếu thỏa mãn: \forall u,v\in V , tồn tại đường đi từ u đến v hoặc từ v đến u . Tức là với bất kỳ hai điểm u,v nào trong đồ thị, luôn có một đường đi có hướng từ u đến v hoặc từ v đến u .

Nếu G'=(V',E') thỏa mãn E’ là tập hợp tất cả các cạnh trong E có hai đầu mút thuộc V’ , thì G’ được gọi là một đồ thị con cảm sinh (induced subgraph) của G . Nếu G’ là đồ thị con cảm sinh của G G’ bán liên thông, thì G’ được gọi là đồ thị con bán liên thông của G . Nếu G’ là đồ thị con bán liên thông có chứa số lượng đỉnh nhiều nhất trong tất cả các đồ thị con bán liên thông của G , thì G’ là đồ thị con bán liên thông lớn nhất của G .

Cho một đồ thị có hướng G , hãy tìm số lượng đỉnh K của đồ thị con bán liên thông lớn nhất của G , và số lượng các đồ thị con bán liên thông lớn nhất khác nhau C . Vì C có thể rất lớn, chỉ cần xuất số dư của C khi chia cho X .

Dữ liệu:

  • Dòng đầu tiên chứa ba số nguyên N, M, X . N, M lần lượt là số đỉnh và số cạnh của đồ thị G , X có ý nghĩa như đã mô tả.
  • M dòng tiếp theo, mỗi dòng chứa hai số nguyên dương a, b , biểu thị một cạnh có hướng (a, b) .
  • Các điểm trong đồ thị được đánh số 1, 2, 3, \cdots, N . Đảm bảo không có cạnh (a, b) nào xuất hiện hai lần.

Kết quả:

  • Gồm hai dòng.
  • Dòng đầu tiên chứa số nguyên K .
  • Dòng thứ hai chứa số nguyên C \bmod X .

Ví dụ:

Dữ liệu:

6 6 20070603
1 2
2 1
1 3
2 4
5 6
6 4

Kết quả:

3
3

Giới hạn:

  • 20\% số dữ liệu có N \le 18 .
  • 60\% số dữ liệu có N \le 10^4 .
  • 100\% số dữ liệu có 1\le N \le 10^5, 1\le M \le 10^6, X\le 10^8 .