A graph is a data structure consisting of nodes connected by edges. There are different types of graphs such as undirected graphs, directed graphs, connected graphs, and strongly connected graphs. Algorithms like depth-first search, Kosaraju's algorithm, and Warshall's algorithm can be used to find strongly connected components, biconnected components, and shortest paths in graphs.