Learning Material
Basic Track:
1) C++ STL: Vector, Stack, Queue, List(Linked List), Set, Map, Priority Queue
For reference: http://www.cplusplus.com/reference/stl/ (very useful during coding if you forget something)
Pre-requisite for Graph Algorithms: Representing graphs as adjacency lists, adjacency matrices etc.
2) Depth First Search
3) Breadth First Search
4) Floyd-Warshall
5) Single Source Shortest Paths - Dijkstra's in O(V^2)
Advanced Track:
Advanced STL uses: http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=standardTemplateLibrary2
1) Single Source Shortest Paths - Dijkstra's in O(V+E*logV) - Refer to priority queue or set approach in Advanced STL uses mentioned above or read this tutorial:
2) Single Source Shortest Paths(with negative weights) - Bellman-Ford:
3) Topological Sorting:
4) Strongly Connected Components - Kosaraju's or Tarjan's algorithm.
A) Kosaraju's:
B) Tarjan's:
Implementation: http://zobayer2009.wordpress.com/code/
5) Bi-Connected Components, finding Articulation Points and Bridges.
Implementation: http://zobayer2009.wordpress.com/code/
6) Minimum Spanning Tree - Prims or Kruskals algorithms.
A) Prims:
Implementation:
B) Kruskals:
Practice Problems
Basic Track:
Advanced Track:
Thank you for the sources.
ReplyDeleteYou can also learn from TekSlate tutorials teaches the fundamentals of Data Structures and algorithms with many workout examples