LQDOJ Cup 2023 - Round 8 - H Graph

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2100 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: hgraph.inp Output: hgraph.out

Huy là một học sinh có nhiều hứng thú về đồ thị. Trong quá trình nghiên cứu về chủ đề này, Huy đã nghĩ ra một dạng đồ thị dựa trên tên anh ấy, gọi là đồ thị H. Một đồ thị H là một đồ thị vô hướng gồm \(6\) đỉnh phân biệt được kí hiệu lần lượt là \(A, B, C, D, E, F\)\(5\) cạnh:

  • \(C\) có cạnh nối với \(A, B\);
  • \(D\) có cạnh nối với \(E, F\);
  • \(C\)\(D\) có cạnh nối với nhau.

Là một người cùng nghiên cứu đồ thị với Huy, bạn được Huy cho một đồ thị \(G\) vô hướng gồm \(n\) đỉnh và \(m\) cạnh sao cho mỗi cạnh nối hai đỉnh khác nhau và giữa hai đỉnh bất kỳ có tối đa một cạnh nối giữa chúng. Nhiệm vụ của bạn là giúp Huy đếm xem có bao nhiêu đồ thị con khác nhau của \(G\) thỏa mãn điều kiện của một đồ thị H.

Biết rằng:

  • Đồ thị con của đồ thị \(G=(V,E)\) là đồ thị \(H=(W,F)\), sao cho \(W \subseteq V\)\(F\subseteq E\).
  • Hai đồ thị con được gọi là khác nhau khi tồn tại cạnh xuất hiện trong đồ thị này nhưng không xuất hiện trong đồ thị còn lại.

Input

  • Dòng đầu tiên chứa hai số nguyên \(n\)\(m\) \(\left(1 \leq n \le 10^5, 0 \leq m \le \min\left(\frac{n \times (n-1)}{2}, 4 \times 10^5\right)\right)\) lần lượt là số đỉnh và số cạnh của đồ thị.
  • Trong \(m\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(u\)\(v\) \((1 \le u \neq v \le n)\) cho biết có một cạnh nối giữa hai đỉnh \(u\)\(v\).

Output

  • Một số nguyên duy nhất là số lượng đồ thị con của \(G\) là đồ thị H sau khi chia lấy dư cho \(10^9+7\).

Example

Test 1

Input
6 7
1 2
2 3
3 4
4 5
5 6
6 1
6 3
Output
1
Note

Đồ thị con duy nhất là đồ thị H được tạo ra bằng cách bỏ đi \(2\) cạnh \((1, 2)\)\((4, 5)\) từ đồ thị gốc.

Test 2

Input
6 9
1 2
2 3
3 4
4 5
5 6
6 1
6 3
3 5
2 4
Output
2
Note
  • Đồ thị con đầu tiên được tạo ra bằng cách bỏ đi \(4\) cạnh \((1, 2), (4, 5), (3, 5)\)\((2, 4)\) từ đồ thị gốc.
  • Đồ thị con thứ hai được tạo ra bằng cách bỏ đi \(4\) cạnh \((3, 4), (4, 5), (1, 6)\)\((6, 5)\) từ đồ thị gốc.

Scoring

  • Subtask \(1\) (\(20\%\) số điểm): \(n \leq 20\).
  • Subtask \(2\) (\(20\%\) số điểm): \(m = n - 1\) và giữa hai đỉnh bất kỳ đều tồn tại đường đi giữa chúng.
  • Subtask \(3\) (\(20\%\) số điểm): \(n, m \leq 5000\).
  • Subtask \(4\) (\(20\%\) số điểm): \(n \leq 10^{4}\).
  • Subtask \(5\) (\(20\%\) số điểm): Không có ràng buộc gì thêm.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: