Mechanism design is concerned with computing desired outcomes in situations where data is distributed among selfish agents. We discuss some of the most fundamental questions in the design of mechanisms, and derive simple answers by interpreting the problem in graph-theoretic terms. Specifically, much of mechanism design is thereby reformulated as shortest path problems.