## Search Algorithms

In this section, we will be learning about various search algorithms. As the name says it is a searching algorithm that is used for checking whether the given data is present in a collection of data or not.

## Graph Algorithms

In this series of the topic, we explore various algorithm and concept related to Graph Algorithms and their implementation in C++. Each topic consists of Notes, Curated Practice Problems, and YouTube videos for Proper Understanding.
• Basic Graph Theory
• Graph Representation
• Graph Traversal
• Depth First Search
• Application of DFS
• Connected Component, Articulation Points, Bridges
• Cycle Detection
• Application of BFS
• Connected Component, Cycle Detection
• Tree Algorithms
• Different types of Tree Traversal
• Diagonal of Tree
• All Longest Paths
• Counting Number of nodes in Subtree
• Shortest Path Algorithms
• Introduction to Shortest Path & Bellman-Ford Algorithms
• Dijkstra Algorithm
• Floyd-Warshall's Algorithm
• Minimum Spanning Tree
• Introduction to Spanning Tree, MST, Kruskal's Algorithm
• Prim's Algorithm
• Directed Graphs
• Topological Sort
• Acyclic Graph Problem Solving using Dynamic Programming
• Successor Paths and Cycle Detection using Floyd's Algorithm in DAG
• Strongly Connected Components
• Tree Queries
• Finding K-th Ancestors
• Subtree and Path Queries
• Lowest Common Ancestors
• Flood-fill Algorithm
• Biconnected Components
• Hamiltonian Path
• Maximum Flow
• Minimum Cost Maximum Flow
• Min-cut

## String Algorithms

• Basics of String Manipulation
• String Searching
• Z Algorithm
• Manachar's Algorithm