The third edition of this popular text presents the tools of combinatorics for a first undergraduate course. After introducing fundamental counting rules, tools of graph theory and relations, the focus is on three basic problems of combinatorics: counting, existence, and optimization problems. They discuss advanced tools for dealing with the counting problem, including generating functions, recurrences, inclusion/exclusion, and Polya theory. Combinatorial design, coding theory, and special problems in graph theory are also covered. It also illustrates the basic ideas of combinatorial optimization through a study of graphs and networks. The authors present many contemporary applications.