video hay quá a ơi... e cảm ơn a nhiều nha ... :_ năm ngoái học đội tuyển hsg e còn ko hiểu thuật toán dfs... nhờ video của a, e ms hiểu thuật toán dfs ạ
kk em sắp thi cuối kỳ TRR rồi mà từ đầu năm chỉ đến để điểm danh. May kênh anh có luôn phần đồ thị khoai nhất này để cày kk. Em cày xong đống này sẽ cumback ôn khoá C++ đã đky ạ. em quyetBK khum biết anh có nhớ em khum :
a Lộc ơi, em thấy cài đặt thuật toán DFS của anh nếu input là một đồ thị không liên thuộc thì sẽ không thể duyệt hết các đỉnh được. Thêm nữa ví dụ đang xét đỉnh và duyệt các đỉnh cạnh nó là 2 và 3, nếu nhập 3 trước 2 thì khi duyệt sẽ đi qua 3 trước (đáng ra phải đi từ lớn tới bé mới phải).
Thường thì a tổng hợp từ nhiều nơi lắm, từ sách vs tutorial. Em có thể đọc cuốn giải thuật của thầy Lê Minh Hoàng, cp-algorithm, hackerearth vs geeksforgeeks.
cho em hỏi mục đích của việc sử dụng stack với ạ, tại em nghĩ nếu như mình xét đỉnh nào chưa thăm thì mình chỉ việc xuất ra thôi ạ, cho nên em còn mơ hồ về việc ứng dụng stack vào lắm ý
@@28tech_ dạ vậy cho em hỏi làm sao để mình biết khi nào mình chuyển đổi qua các dạng biểu diễn đồ thị ạ ? ví dụ như từ danh sách cạnh sang danh sách kề như trong video, liệu em có thể chuyển từ danh sách cạnh sang ma trận kề được không ạ ? hay khi code mình ưu tiên chuyển sang danh sách kề ạ ?
@@HoangNguyen-np7pl Em chuyển từ kiểu này sang kiểu kia thoải mái nhé, nhưng khi code thì mình sẽ dùng ds kề để độ phức tạp của thuật toán nó tốt hơn, kể cả họ cho ma trận kề hay ds cạnh thì e đều chuyển về ds kề để code.
@@28tech_ em code đúng rồi anh, em sai cái chỗ nhập input, nhập thiếu ấy anh, kiểu em kiểm nghiệm khi nhập 9 đỉnh 9 cạnh, phải nhập đủ, đối với các bài 4 đỉnh 6 cạnh chẳng hạn, khi mình nhập 4 6 thì chương trình đã chạy ngầm rồi ấy anh, em nhập có 6 cạnh mà nhập 5 cạnh thôi nó không đúng cái ở trên là nó không nhận á
Thông tin các khóa học mình đang hướng dẫn : 28tech.com.vn/
Cảm ơn anh, nhờ những video của anh mà em đã tiến bộ lên rất nhiều ạ.
Bài giảng hay quá a ơi !! Em cảm ơn anh nhiều về bài giảng ạ
🤗🤗🤗🤗
Quá hay anh ơi !! Ngày mai em thi DSA r mà giờ ngồi coi video của anh ôn lại bài dễ hiểu và ngấm hơn rất nhiều lun
😍😍
Em đang học bên Java mà nhờ bài của anh em thích lun C++
Java hay mà, a lại thích Java. :D
Hay quá anh, cực kì dễ hiểu❤❤❤
video hay quá a ơi... e cảm ơn a nhiều nha ... :_ năm ngoái học đội tuyển hsg e còn ko hiểu thuật toán dfs... nhờ video của a, e ms hiểu thuật toán dfs ạ
Ok em ✌🏿✌🏿✌🏿✌🏿
10 điểm cho chất lượng!!!
Đã học tới đây rồi.
Anh ơi anh bị nghiện ok' hic.
Giờ hết rồi em 🤩🤩🤩
Xin cảm ơn
Hay á anh
Cảm ơn em nhé
Hay quá anh ui
🤗🤗🤗
28 tech giảng bài quá hay a ạ
Ok cảm ơn em nhé, chúc em học tốt
hay quá idol
chất lượng quá anh ơi :3
Thank em đã ủng hộ ✌🏿✌🏿✌🏿✌🏿
Hôm nay anh ra nhiều video thế
ờ a vứt trong máy lâu rồi mà CN mới có thời gian edit :D
@@28tech_ video hay lắm a
@@abcxyzd-y2y thank you :D
a cho em hỏi là ví dụ với bài toán fibonacci thì khi gọi đệ quy là return f[n - 1] + f[n - 2] thì máy tính sẽ gọi đệ quy tới thằng nào trước vậy anh
n-1 trước
kk em sắp thi cuối kỳ TRR rồi mà từ đầu năm chỉ đến để điểm danh. May kênh anh có luôn phần đồ thị khoai nhất này để cày kk. Em cày xong đống này sẽ cumback ôn khoá C++ đã đky ạ. em quyetBK khum biết anh có nhớ em khum :
Haha nhanh lên
@@28tech_ anh ơi cho em xin slides video này ạ
a Lộc ơi, em thấy cài đặt thuật toán DFS của anh nếu input là một đồ thị không liên thuộc thì sẽ không thể duyệt hết các đỉnh được. Thêm nữa ví dụ đang xét đỉnh và duyệt các đỉnh cạnh nó là 2 và 3, nếu nhập 3 trước 2 thì khi duyệt sẽ đi qua 3 trước (đáng ra phải đi từ lớn tới bé mới phải).
Ko liên thông thì gọi nhiều lần dfs, còn duyệt 3 hay 2 trước thì nó do mình nhé em chứ ko có quy định nào về việc phải duyệt đỉnh nào trước
thuật toán này tìm đường đi hay chu trình Euler k ạ?
Uh tương tự nhé em.
cho e hỏi cái memset dùng để làm gì ạ
Gán giá trị cho các phần tử trong mảng nhé em
Anh ơi thuật toán này thường được ứng dụng để giải những bài toán nào ạ?
18:45 a làm nhanh quá em k xem kịp
chỗ memset có nhiệm vụ là khởi tạo cho mảng visited có giá trị false hết đúng không ạ?
Đúng em
21:43
muốn trình bày duyệt theo kiểu tự luận thì sao ạ
em chào anh ạ, a cho em hỏi sao biểu diễn đồ thị bằng danh sách kề lại có độ phức tạp O(V+E) ạ. Mong nhận được phản hồi từ anh :((
anh dùng web nào để vẽ đồ thị anh
Anh dùng google drawing em nhé
Anh cho em hỏi nếu kh dùng dòng for each thì mình sửa thế nạo ạ. Em cảm ơn
Giả sử duyệt danh sách cạnh của đinh i thì e duyệt là for(int j = 0; j < adj[i].size; j++) sau đó truy cập vào đỉnh kề vs đỉnh i là adj[i][j]
Thầy ơi cho em hỏi là memset() em cần khai báo gì trên thư viện ạ
Nó thuộc thư viện stdlib.h thì phải, b dùng thư viện bits như m ấy thì ko phải khai bao thêm nữa
anh ơi mấy kiến thức mà anh dạy mình có thể xem ở tài liệu nào vậy anh
Thường thì a tổng hợp từ nhiều nơi lắm, từ sách vs tutorial. Em có thể đọc cuốn giải thuật của thầy Lê Minh Hoàng, cp-algorithm, hackerearth vs geeksforgeeks.
có tài liệu nào dạy java có những kiến thức mở rộng như này không ạ.
Thường thì ko có đâu em ạ, tự code thôi, trong java cũng có mọi ctdl như C++ mà.
Đồ thị không liên thông thì phải làm sao ạ ...
Ko liên thông thì gọi nhiều lần trên mọi thành phần liên thông nha
em chạy trên c++ thì nó báo lỗi dòng for(int v : adj[u]) là [Error] range-based 'for' loops are not allowed in C++98 mode là sao anh?
em chạy vs chuẩn C++ 11 trở lên thì nó mới có for each. Vào tool - compiler option - setting - language standard - code generation - gnu c++ 11
A ơi cho e hỏi với ạ. Trong code của a ko có phần pop đỉnh mà ko có đỉnh kề ấy ạ thì sao đệ quy chạy hết đồ thị đc ạ. E cảm ơn ạ
Không hiểu câu hỏi e lắm, có gì em inbox page a hỏi cho kỹ
khử đệ quy đc kh anh ?
Được em, sử dụng stack là ok
cho em hỏi mục đích của việc sử dụng stack với ạ, tại em nghĩ nếu như mình xét đỉnh nào chưa thăm thì mình chỉ việc xuất ra thôi ạ, cho nên em còn mơ hồ về việc ứng dụng stack vào lắm ý
Quan trọng là nó còn có bước backtrack lại e ạ khi 1 đỉnh nào đó ko thể tiếp tục mở rộng
@@28tech_ dạ vậy cho em hỏi làm sao để mình biết khi nào mình chuyển đổi qua các dạng biểu diễn đồ thị ạ ? ví dụ như từ danh sách cạnh sang danh sách kề như trong video, liệu em có thể chuyển từ danh sách cạnh sang ma trận kề được không ạ ? hay khi code mình ưu tiên chuyển sang danh sách kề ạ ?
@@HoangNguyen-np7pl Em chuyển từ kiểu này sang kiểu kia thoải mái nhé, nhưng khi code thì mình sẽ dùng ds kề để độ phức tạp của thuật toán nó tốt hơn, kể cả họ cho ma trận kề hay ds cạnh thì e đều chuyển về ds kề để code.
@@28tech_ dạ vâng em cảm ơn Thầy nhiều ạ
sao lúc em nhập input của anh là nó ra, mà em nhập input của em là nó cứ enter xuống dòng hoài vậy anh ạ, giúp em với
Hỏi này hơi khó vì ko biết em code có đúng ko nữa
@@28tech_ em code đúng rồi anh, em sai cái chỗ nhập input, nhập thiếu ấy anh, kiểu em kiểm nghiệm khi nhập 9 đỉnh 9 cạnh, phải nhập đủ, đối với các bài 4 đỉnh 6 cạnh chẳng hạn, khi mình nhập 4 6 thì chương trình đã chạy ngầm rồi ấy anh, em nhập có 6 cạnh mà nhập 5 cạnh thôi nó không đúng cái ở trên là nó không nhận á
nếu input dùng ma trận kề thì sao ạ
thì em chuyển sang ds kề rồi code, hoặc code thẳng trên ma trận kề cũng được, duyệt đỉnh nào đó thì duyệt dòng đó để check đỉnh kề.
Anh ơi nếu yêu cầu bài toán là lấy dữ liệu từ 1 file cho trước thì sao ạ
Thì em học đọc ghi file thôi, đọc thì như a nhập ý, khác nahu giữa luồng vào từ file cà bàn phím thôi
@@28tech_ anh nói rõ hơn được không ạ tại cái đoạn chuyển từ ds cạnh sang ds kề mà đọc file thì thế nào ạ
@@tainguyenuc9305 Đọc xuất file bạn có thể tham khảo lệnh "freopen" trong c++ nhé, mình thấy dùng này khá tiện
a giải thích cho e đoạn for(int v : adj[u]) với ạ
Đây là for each duyệt từng đỉnh kề với đỉnh u e nhé.