A directed acyclic graph(or DAG for short) is a directed graph that contains no cycles. In a DAG, a **source** is a vertex without incoming edges; a **sink** is a vertex without outgoing edges. Each DAG contains at least one source and one sink.

Important points :-

- After removing a source or a sink from a DAG, the resulting graph is still a DAG.
- If a vertex is the only source/sink removing it creates a new source/sink.
- Each DAG has a topological order.
- Back edges are the edges (u,v) where v is an ancestor of u in the tree.
- Depth-First-Search tree (DFS Tree) is a rooted tree whose nodes are nodes of the graph. New nodes are attached to the tree, as they get visited during the DFS run.