Implementation graph using arrays.
Mảng E[k] chứa thông số của cạnh k (ví dụ như đỉnh vào u, đỉnh ra v, trọng số...) và một biến link trỏ tới index tiếp theo trong các cạnh kề với đỉnh u.
Mảng LE[u] chứa đỉnh cuối cùng trong danh sánh các cạnh kề với đỉnh u.
Khởi tạo LE[u] = -1.
Thêm vào một cạnh k nối hai đỉnh (u, v) | add_edge(int e, int u, int v):
for (id = LE[u]; id != -1; id = E[id].link)
// Xử lý cạnh u, v.
Đánh giá : Nhanh gọn lẹ. Đồ thị tốt nhất nên tỉnh nhưng cũng dễ sửa thông tin cạnh.
Mảng LE[u] chứa đỉnh cuối cùng trong danh sánh các cạnh kề với đỉnh u.
Khởi tạo LE[u] = -1.
Thêm vào một cạnh k nối hai đỉnh (u, v) | add_edge(int e, int u, int v):
- E[k].u = u, E[k].v = v; // Thêm thông tin cho cạnh.
- E[k].link = LE[u]; // Trỏ cạnh k tới cạnh cuối cùng trong danh sách kề với u.
- LE[u] = k; // Lúc này cạnh cuối cùng kề với u là k.
for (id = LE[u]; id != -1; id = E[id].link)
// Xử lý cạnh u, v.
Đánh giá : Nhanh gọn lẹ. Đồ thị tốt nhất nên tỉnh nhưng cũng dễ sửa thông tin cạnh.
Comments
Post a Comment