Đồ thị cô đơn (Chọn ĐT'24-25)

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ớ: 256M Input: LGR.inp Output: LGR.OUT

Tí có một đồ thị \(G\) vô hướng gồm \(n\) đỉnh và \(m\) cạnh. Ta gọi một đỉnh thuộc đồ thị là cô đơn nếu nó chỉ có thể đến được không quá 1 đỉnh khác nó. Hai đỉnh \(u, v\) được gọi là đến được nhau nếu tồn tại một dãy các đỉnh \(v_1 = u, v_2, \dots, v_k = v\), sao cho \(\forall 1 \le i < k\) thì cạnh \((v_i, v_{i+1})\) thuộc đồ thị.

Ta có \(G(l, r)\) là đồ thị \(G\) nhưng chỉ giữ lại các đỉnh có chỉ số trong đoạn \([l, r]\) và các cạnh nối giữa các đỉnh trong đoạn \([l, r]\); độ cô đơn \(f(l, r)\) sẽ là số lượng đỉnh cô đơn có trong đồ thị \(G(l, r)\). Nhiệm vụ của Tí là tính tổng:

\[\sum_{l=1}^{n} \sum_{r=l}^{n} f(l, r)\]

Input

  • Dữ liệu vào từ file văn bản LGR.INP:
    • Dòng đầu tiên chứa hai số nguyên \(n\) (\(1 \le n \le 10^5\)), \(m\) (\(0 \le m \le 2 \cdot 10^5\)).
    • \(m\) dòng tiếp theo, dòng thứ \(i\) gồm hai số nguyên \(u_i, v_i\) (\(1 \le u_i, v_i \le n\)) mô tả hai đỉnh nối bởi cạnh thứ \(i\). Dữ liệu đảm bảo \(\forall i \neq j: u_i \neq u_j\) hoặc \(v_i \neq v_j\).

Output

  • Ghi ra file văn bản LGR.OUT:
    • Ghi kết quả trên một dòng, là tổng độ cô đơn của tất cả \(G(l, r)\).

Example

Test 1

Input
5 3
2 4
1 2
2 3
Output
18

Scoring

  • Subtask \(1\) (\(25\%\) số điểm): \(n \le 300, m \le 600\).
  • Subtask \(2\) (\(25\%\) số điểm): \(n \le 2000, m \le 4000\).
  • Subtask \(3\) (\(25\%\) số điểm): \(f(1, n) \ge n - 3\).
  • Subtask \(4\) (\(25\%\) 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: