Đồ thị điều hòa
Nộp bài giải
Điểm:
5,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Đầu vào:
stdin
Đầu ra:
stdout
Dạng bài
Ngôn ngữ cho phép
Ada, Algol, Assembly, Awk, C, C#, C++, D, Dart, Forth, Fortran, Go, Groovy, Java, Javascript, Kotlin, Lisp, Lua, Nim, ObjC, Pascal, Perl, PHP, Pike, Python, Racket, Ruby, Rust, Scheme, Scratch, Sed, TCL, Typescript, V, Zig
Cho một đồ thị vô hướng đơn gồm đỉnh và cạnh. Các đỉnh được đánh số từ đến .
Đồ thị được gọi là điều hòa nếu thỏa mãn tính chất sau:
- Với mọi bộ ba số nguyên mà , nếu trong tồn tại đường đi từ đỉnh đến đỉnh thì cũng phải tồn tại đường đi từ đỉnh đến đỉnh .
Nói cách khác, nếu từ đỉnh ta có thể đến đỉnh với , thì ta cũng phải đến được mọi đỉnh có chỉ số nằm giữa, tức .
Hãy tính số cạnh ít nhất cần thêm vào để đồ thị trở nên điều hòa.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và .
- dòng tiếp theo, mỗi dòng chứa hai số nguyên () — mô tả một cạnh nối đỉnh với .
Đồ thị là đơn (không có cạnh khuyên và không có hai cạnh nối cùng một cặp đỉnh).
Dữ liệu ra
In ra một số nguyên duy nhất — số cạnh tối thiểu cần thêm để đồ thị trở nên điều hòa.
Ràng buộc
- ,
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 200000 3 7 9 9 8 4 5 |
0 | Đồ thị đã điều hòa: thành phần và đều có các đỉnh liên tiếp. |
| 14 8 1 2 2 7 3 4 6 3 5 7 3 8 6 8 11 12 |
1 | Từ đỉnh có thể đến đỉnh nhưng không đến được . Thêm cạnh là đủ để đồ thị điều hòa. |
| 3 1 1 3 |
1 | Từ đến được nhưng không đến được , phải thêm cạnh. |
Bình luận