i agree
I liked how you submitted your single source BFS code to prove that it won’t work.
Thanks! I am glad you are following the series.
Here are the updates:
-
I solved another CSES problem: Lava Flow and Multisource BFS
- YouTube -
Introduction to Trees, Binary Trees, Min/Max Heaps, Flattening a Tree into a Vector
- YouTube -
I made an introductory video 00 to make things even simpler
- YouTube -
I am reuploading the solution to the first problem, for greater audio clarity and better explanation/presentation
- YouTube
Today I will try and share Dijkstra theory while solving the next CSES problem.
Language dependent or independent videos ?
I explain concepts in English. But my implementation is in C++, I explain every critical aspect of code though. Just check it out, you’ll like it.
This video series is really helpful! I am really excited about this series and will keep posting updates to support you. I just finished the first two videos. Nice explanation of BFS and DFS on the grid.
Thanks a lot for you effort and hard work. It is really helpful for the coding comminity.
Thank you guys. Please subscribe! Its a humble request. Will post more videos soon.
Hey please try to make a few more videos on Dijkstra algo, with some interesting problems
Done with Dijkstra:: 09 Graph Theory:: Dijkstra's Algorithm with CSES 08 Shortest Routes I (1671) - YouTube
Do give feedback, please!
I updated the Dijkstra’s with more information/explanation/simulation/demonstration! 
I will be adding Bellman-Ford and solving more problems starting tomorrow.
You guys can expect a lot more Dijkstra variants too 
Please keep following this series to improve your understanding of graph theory.
Hey, can you help me with this problem?
Check out my DFS
void dfs(int u)
{
for(idx[u]; idx[u] < g[u].size(); idx[u]++)
{
int v = g[u][idx[u]];
int x = u;
int y = v;
if(x > y)
{
swap(x,y);
}
if(edge[x].find(y) == edge[x].end()) continue;
edge[x].erase(y);
--degree[u];
--degree[v];
dfs(v);
}
stck.push(u);
}
See what i did there? I created a global vector idx and did the following to track the edge being currently explored.
for(idx[u]; idx[u] < g[u].size(); idx[u]++)
When I come back, I don’t start checking ALL neighbours of vertex ‘u’. I simply continue from where I left. Hope that makes sense?
If we don’t take care of this, we will search ALL edges every time in the following case. I am calling this graph a flower-with-petal graph. Only seven petals in this graph, but imagine what happens if there are 10^5 petals (with O(N^2) complexity)

If it doesn’t I am not going to type out more here. I try to make a Eulerian Circuit video on priority and explain this aspect clearly.
Watch out for this video series: - YouTube
One can also follow this
Hey guys! Just solved another problem for you guys: High Score and this time we study the “Bellman-Ford” Algorithm.
Hope you’ll love it.
one of the best graph theory tutorial is by Code N Code
Floyd-Warshall being uploaded soon! Catch up fast, guys!
There is nothing in youtube that is as good as this channel when it comes to graph theory.
thank you.