A graph is a non-linear data structure, used to represent a set of relationships(edges) among a set of things(vertices). https://www.geeksforgeeks.org/graph-data-structure-and-algorithms/

Since, now it is known what a graph is, next task is to represent a graph. The two most common ways to represent a graph are an adjacency list and an adjacency matrix. https://www.geeksforgeeks.org/graph-and-its-representations/

Once it is clear on what is a graph and how to represent it, the next thing to do is to know how to traverse a graph. BFS and DFS are the one of the most common graph traversal algorithms.

Implementations of all graph algorithms that are commonly used are described here. https://codeforces.com/blog/entry/16221

For video lectures, refer the following playlist. https://www.youtube.com/playlist?list=PLDV1Zeh2NRsDGO4--qE8yH72HFL1Km93P

Problems — BFS/DFS
All the problem mentioned below require some use of either BFS or DFS algorithm.
https://www.codechef.com/problems/FIRESC
https://codeforces.com/problemset/problem/893/C
https://codeforces.com/problemset/problem/115/A
https://www.spoj.com/problems/ELEVTRBL/
https://www.spoj.com/problems/PPATH/
https://codeforces.com/contest/954/problem/D
https://codeforces.com/problemset/problem/1176/E
https://www.spoj.com/problems/KFSTB/