Thuật toán Warshall

Xem dạng PDF

Gửi bài giải

Điểm: 700,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Nguồn bài:
HungTV
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Đồ thị vô hướng đơn gồm ~n \le 200~ đỉnh và ~m~ cạnh. Nhiệm vụ của bạn là liệt kê toàn bộ các thành phần liên thông của đồ thị, trong đó mỗi thành phần được biểu diễn bởi danh sách các đỉnh thuộc về nó.

Yêu cầu:
Xác định các thành phần liên thông và in ra danh sách các đỉnh trong mỗi thành phần theo thứ tự tăng dần.

Các công thức sử dụng:

  • Một cạnh được mô tả bởi cặp đỉnh ~(u, v)~ với ~1 \le u, v \le n~.
  • Hai đỉnh thuộc cùng một thành phần liên thông nếu tồn tại đường đi nối chúng trong đồ thị.

Dữ liệu

  • Dòng đầu gồm hai số nguyên ~n~ và ~m~.
  • ~m~ dòng tiếp theo, mỗi dòng gồm hai số nguyên ~u, v~ là cạnh nối hai đỉnh ~u~ và ~v~ của đồ thị.

Kết quả

Liệt kê các thành phần liên thông theo mẫu:

Connected Component k: x1, x2, x3, ...

Trong đó ~k~ là số thứ tự thành phần (bắt đầu từ ~1~) và các ~x_i~ là đỉnh thuộc thành phần được sắp tăng dần.

Ví dụ

Input
12 10
1 4
2 3
3 6
4 5
6 7
8 9
8 10
9 11
11 8
11 12
Output
Connected Component 1: 1, 4, 5,
Connected Component 2: 2, 3, 6, 7,
Connected Component 3: 8, 9, 10, 11, 12,

Ví dụ trên cho thấy đồ thị có ~3~ thành phần liên thông. Chẳng hạn, thành phần thứ ba gồm các đỉnh ~8, 9, 10, 11, 12~ vì tất cả đều có đường đi liên kết với nhau thông qua các cạnh cho trước.

Các ràng buộc, yêu cầu của bài toán

  • ~1 \le n \le 200~
  • ~1 \le m \le \dfrac{n(n-1)}{2}~
  • Các cạnh là vô hướng và không lặp.
  • Cần sắp xếp các đỉnh trong từng thành phần theo thứ tự tăng dần.

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.