Fundamentals of Graph Theory