AI Empire Academy
CHUYÊN ĐỀ C++ THỰC CHIẾN

Bài tập Đồ thị & Giải thuật đồ thị trong C++

Mô hình hóa các mạng lưới phức tạp bằng đồ thị. Cài đặt các thuật toán tìm đường, liên thông và tối ưu mạng lưới với hiệu năng cực cao bằng C++ STL.

29

bài tập có chấm code

Bài tập theo chuyên đề, có đề bài, ví dụ và starter code riêng.

0

cơ bản

Củng cố nền tảng và làm quen với kỹ thuật cốt lõi.

0

trung bình

Kết hợp nhiều bước suy luận để vận dụng kiến thức.

29

nâng cao

Thử thách tối ưu, cấu trúc dữ liệu và thuật toán chuyên sâu.

Lộ trình thực hành đề xuất

Bước 1

Lưu trữ đồ thị

Biểu diễn danh sách kề bằng vector<pair<int, int>> adj[N].

Bước 2

Duyệt BFS & DFS

Duyệt đồ thị, đếm thành phần liên thông, tô màu đồ thị và tìm kiếm đường đi.

Bước 3

Thuật toán Dijkstra

Tìm đường đi ngắn nhất đồ thị có trọng số không âm dùng std::priority_queue trong O(E log V).

Bước 4

Cây khung nhỏ nhất (MST)

Thuật toán Kruskal kết hợp cấu trúc dữ liệu Disjoint Set Union (DSU).

Lỗi thường gặp & Cách phòng tránh

•

Dùng queue thường cho Dijkstra thay vì priority_queue dẫn đến độ phức tạp thời gian tăng vọt.

•

Không khởi tạo khoảng cách ban đầu bằng vô cùng cực lớn (0x3f3f3f3f hoặc 1e18 cho long long).

Danh sách bài tập thực hành (29 bài)

Trong mỗi mức độ, bài tập được xếp từ dễ nhất đến khó nhất — hãy đi theo số bước.

Nâng cao 29 bài

Thử thách

Thuật toán chuyên sâu: quy hoạch động, đồ thị, cây.

Chuyên sâu

Cấu trúc dữ liệu nâng cao và nhiều bước chứng minh.

Tối ưu & chứng minh

Ràng buộc chặt về thời gian và bộ nhớ — mức thi đấu.

cpp-058Bước 24Nâng cao

Bellman-Ford: Truy vết Chu trình Âm

Cho một đồ thị có hướng gồm N đỉnh và M cạnh có trọng số (trọng số có thể âm). Hãy kiểm tra xem đồ thị có chứa chu trình trọng số âm hay không. Nếu có, hãy tìm và in ra các đỉnh th…

cpp-059Bước 27Nâng cao

Block-Cut Tree: Thành phần Song liên thông Đỉnh

Cho một đồ thị vô hướng liên thông gồm N đỉnh và M cạnh. Xây dựng Block-Cut Tree của đồ thị và đếm số lượng khối (Biconnected Components / Blocks) cùng số lượng đỉnh khớp (articula…