Giải thích đoạn code đồ thị trong CTDL và GT

Mọi người cho mình hỏi, mình mới học đồ thị trong CTDL-GT, nhưng ngay hàm đầu tiên trong chương trình biểu diễn đồ thị mình đã gặp rắc rối, bình thường dùng vector. mình đều dùng vector adj; chứ chưa bao giờ dùng vector adj[ ]; không biết ý nghĩa và cách dùng của vector adj[ ] này lầ như thế nào ạ.

#include<bits/stdc++.h> 
using namespace std; 
  
// A utility function to add an edge in an 
// undirected graph. 
void addEdge(vector<int> adj[], int u, int v) 
{ 
    adj[u].push_back(v); 
    adj[v].push_back(u); 
} 

Tức là mảng các std::vector :slight_smile: nói cách khác đây là danh sách kề.

3 Likes

cho mình hỏi, sao không dùng mảng 1 chiều mà phải dùng vector

Vector có thể tự động co giãn.

2 Likes

ok c, mà đoạn này : adj[u].push_back(v); có nghĩa là gì nhỉ, mình chỉ biết mảng adj push thêm v vào, còn thêm chỉ số u ở kia thì ko hiểu

Đây là dạng danh sách kề, mỗi đỉnh lưu một tập các đỉnh kề với nó.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?