This document discusses graphs and Eulerian paths and circuits. It begins by defining what a graph is - a set of nodes and edges. It then describes different types of graphs like directed/undirected, cyclic/acyclic, labeled, and weighted graphs. It explains the concepts of adjacency and connectivity in graphs. The document focuses on Eulerian paths and circuits, providing properties for a graph to have an Eulerian path or circuit. It presents pseudocode for an algorithm to check if a graph is Eulerian using depth-first search. Finally, it includes C++ code for a program that tests if input graphs exhibit an Eulerian path or circuit.