We may earn an affiliate commission when you visit our partners.
Prateek Narang Sr. Software Engineer Google, Apaar Kamal, and Coding Minutes

Welcome to Graph Algorithms for Competitive Coding - the most detailed Specialisation in Graph Theory for Competitive Programmers, Software Engineers & Computer Science students.

Read more

Welcome to Graph Algorithms for Competitive Coding - the most detailed Specialisation in Graph Theory for Competitive Programmers, Software Engineers & Computer Science students.

Graphs is quite an important topic for software engineers, both for academics & online competitions and for solving real life challenges. Graph algorithms form the very fundamentals of many popular applications like - Google Maps, social media apps like Facebook, Instagram, Quora, LinkedIn, Computer Vision applications such as image segmentation, resolving dependencies while compile time, vehicle routing problems in supply chain and many more. This course provides a detailed overview of Graph Theory algorithms in computer science, along with hands on implementation of all the algorithms in C++. Not just that you will get 80+ competitive coding questions, to practice & test your skills.  

This comprehensive course is taught by Prateek Narang & Apaar Kamal, who are Software Engineers at Google and have taught over thousands of students in competitive programming over last 5+ years. This course is worth thousands of dollars, but Coding Minutes is providing you this course to you at a fraction of its original cost. This is action oriented course, we not just delve into theory but focus on the practical aspects by building implementing algorithms & solving problems. With over 95+ high quality video lectures, easy to understand explanations this is one of the most detailed and robust course for Graph Algorithms ever created.Course starts very basics with how to store and represent graphs on a computer, and then dives into popular algorithms & techniques for problem solving. The course is divided into two parts.Part-I Graph Theory Essentials

  • Graph Representations

  • Popular Traversals - BFS & DFS

  • Cycle Detection - Weighted & Unweighted Graphs

  • Topological Ordering & Directed Acyclic Graphs

  • Disjoint Set Union, Path Compression & Union by Rank

  • Minimum Spanning Trees - Prim's & Kruskal's

  • Shortest Paths - BFS, Dijkstra's, Bellman Ford, Floyd Warshall

  • Travelling Salesman Problem, Min Cost Hamiltonian Cycle

Part-II Graph Theory Advanced

  • Flood Fill

  • Multisource BFS

  • DFS & Backedges

  • SCC's & Kosaraju's Algorithm

  • Euler Tour

  • LCA

  • Trees

  • Articulation Points & Bridges

  • Network Flow

The part-II is recommended for programmers who want to deep dive into Competitive Programming & take part in contests. For most students part-I is good enough to understand the most fundamental concepts and techniques in graphs. Our special thanks to our problem setters, Siddharth Singhal & Rajdeep from Delhi Technological University, who helped us crafting the complete problem-set for this course. So what you are waiting for ? Sign up today & start your deep-dive into graph theory.

Enroll now

What's inside

Learning objectives

  • Graph basics, applications
  • Bfs, dfs, connected components
  • Shortest paths - dijkstra, bellman, floyd warshall
  • Travelling salesman problem - dp with bitmasks
  • Topological ordering, strongly connected components
  • Disjoint set union, minimum spanning trees, prim's & kruskal
  • Advanced graphs, euler tour, trees
  • Network flow, lca, articulation points
  • Graphs for competitive programming
  • 80 + competitive coding questions
  • Complete code repository in c++ and java
  • Coding exercises solutions
  • Show more
  • Show less

Syllabus

Introduction
Course Orientation!
Q/A Section & Discord Community
Graphs Code Repository C++ and Java!
Read more

Solutions to 80 Coding Questions.

Sharing Feedback
Setting Up Sublime [optional]
Sublime Setup
Adding Master Header File
Escaping Online Judges
Common Code Snippets
Using Macros
Example Code Explained
Learn about Graphs & their representation!
Graphs Introduction
Graph Applications
Graph Key Terms
Adjacency List Representation
Find Center of Star Graph
Adjacency List Representation with Node Class
Maximal Network Rank
Minimum Degree of a Connected Trio in a Graph
Some Helpful Webinars [Optional]
Breath First Search
Breadth First Search
BFS Code
BFS Shortest Path
BFS Shortest Path Code
Snakes and Ladder Game
Snakes and Ladder Solution
Message Route
Word Ladder
Valid Bfs?
Depth First Search
DFS Concept
DFS Code
Keys and Rooms
Largest Island
Largest Island Solution
Astronaut Pairs
Reconstruct Itinerary
Learn to solve problems involving Cycle Detection!
Cycle Detection in Undirected Graph
Cycle Detection in Undirected Graph Code
Directed Graph - Cycle Detection
Directed Graph Cycle Detection
Directed Graph - Cycle Detection Code
Course Schedule
Bipartite Graph
Bipartite Graph Code
Is Graph Bipartite?
Detecting an Odd Length Cycle
Detect Cycles in Grid
Shortest Cycle in Undirected Graph
Directed Acyclic Graph
Directed Acyclic Graph & Topological Ordering
Topological Sort Algorithm
Topological Ordering BFS Code
Toplogical Order using DFS
Topological Ordering using DFS Code
All Paths From Source to Target
Course Schedule II
Largest Color Value in a Directed Graph
Game Routes
Disjoint Set Union
Disjoint Set Union Introduction
DSU Data Structure - Union & Find Ops
DSU Data Structure
DSU Implementation
Forest Detection
Useless Connection
Union by Rank
Path Compression Optimisation
DSU Dry Run
Communication Between Towers
Make Network Connected
Special Paths
Minimum Spanning Trees
Introduction to Minimum Spanning Trees!
Prim's Algorithm
Prim's Code
Kruskal's Algorithm
Kruskal's Code
Minimum Spanning Cost
Connect All
Remove Maximum Number of Edges
Build Roads
Find Critical and Pseudo-Critical Edges in MST
Shortest Path Algorithms
Introduction to Shortest Path Algorithms
Dijkshtra's Algorithm
Dijkshtra's Algorithm Code
Dijkstra
Delay Time in Network
Bellman Ford Algorithm
Bellman Ford Code
Floyd Warshall
Floyd Warshall Code

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Taught by Google Software Engineers, which lends credibility and practical insights to the course content, especially for those seeking industry-relevant skills
Includes over 80 competitive coding questions, offering ample opportunity to practice and solidify understanding of graph algorithms, which is essential for competitive programming
Provides a comprehensive overview of graph theory algorithms, starting with basic concepts and progressing to advanced topics like network flow and LCA, which is suitable for various skill levels
Offers complete code repository in C++ and Java, which allows learners to implement and experiment with graph algorithms in multiple popular programming languages
Focuses on C++ implementations, which may require learners unfamiliar with the language to invest additional time in learning C++ alongside graph algorithms, potentially slowing their progress
Covers topics like Traveling Salesman Problem and Network Flow, which are computationally complex and may require a strong foundation in algorithms and data structures for effective comprehension

Save this course

Save Graph Theory Algorithms for Competitive Programming to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Graph Theory Algorithms for Competitive Programming with these activities:
Review Data Structures
Reviewing fundamental data structures will help you understand how graphs are represented and manipulated in code.
Show steps
  • Review the concept of adjacency lists.
  • Practice implementing graph representations.
Review 'Introduction to Algorithms' by Cormen et al.
Referencing a comprehensive algorithms textbook will provide a solid theoretical foundation for the course.
Show steps
  • Read the chapters on graph algorithms.
  • Work through the examples and exercises.
Solve Graph Problems on LeetCode
Practicing graph problems on platforms like LeetCode will solidify your understanding and improve your problem-solving skills.
Show steps
  • Select graph problems of varying difficulty.
  • Implement solutions in C++ or Java.
  • Analyze the time and space complexity.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Review 'Competitive Programmer's Handbook' by Antti Laaksonen
Studying a competitive programming handbook will provide practical strategies for solving graph problems in contests.
Show steps
  • Read the sections on graph algorithms and data structures.
  • Practice the example problems and exercises.
Create a Blog Post on a Graph Algorithm
Writing a blog post explaining a graph algorithm will reinforce your understanding and help you communicate technical concepts effectively.
Show steps
  • Choose a graph algorithm from the course.
  • Research the algorithm thoroughly.
  • Write a clear and concise explanation.
  • Include examples and diagrams.
Implement a Graph Visualization Tool
Building a graph visualization tool will deepen your understanding of graph representations and algorithms.
Show steps
  • Choose a programming language and visualization library.
  • Implement graph data structures.
  • Implement visualization algorithms.
  • Add features for user interaction.
Contribute to a Graph Algorithm Library
Contributing to an open-source graph algorithm library will provide real-world experience and improve your coding skills.
Show steps
  • Find an open-source graph library on GitHub.
  • Identify a bug or missing feature.
  • Implement a solution or new feature.
  • Submit a pull request.

Career center

Learners who complete Graph Theory Algorithms for Competitive Programming will develop knowledge and skills that may be useful to these careers:
Competitive Programmer
Competitive programmers solve algorithmic problems under constraints, often in contests. This course is highly relevant, as it is specifically designed for competitive programmers. The course covers essential graph algorithms and techniques, such as graph representations, traversals, cycle detection, shortest paths, and minimum spanning trees. The 80+ competitive coding questions and complete code repository in C++ and Java can offer valuable practice and resources. This course helps competitive programmers to master graph theory and improve their problem-solving speed and accuracy.
Algorithm Developer
An algorithm developer creates and refines algorithms for various applications. This course directly prepares you for such a role, by improving your understanding of graph algorithms. The course's focus on graph theory fundamentals, traversal techniques, cycle detection, and shortest path algorithms are essential for designing efficient algorithms. The hands-on implementation of these algorithms in C++ and the numerous competitive coding questions provide algorithm developers with practical experience in problem-solving and optimization. This course may significantly contribute to your expertise as an algorithm developer.
Software Engineer
A software engineer designs, develops, tests, and maintains software applications. This course may provide a strong foundation for software engineers, especially those working on applications that rely heavily on graph theory. Knowledge of graph algorithms gained from this course helps in optimizing software performance, designing scalable systems, and solving complex problems using graphs. The hands-on implementation of algorithms in C++ and the practice with competitive coding questions can directly translate into better problem-solving skills and more efficient coding practices. Software engineers should consider this course to enhance their expertise in graph-related challenges. Topics such as shortest path algorithms and minimum spanning trees are particularly valuable.
Game Developer
Game developers create video games, often using pathfinding algorithms and other graph-related techniques. This course provides valuable knowledge for game developers, covering graph representations, traversals, cycle detection, and shortest path algorithms. These concepts are fundamental to implementing AI agents, designing game levels, and optimizing game performance. The hands-on implementation of algorithms in C++ and the problem-solving exercises may enhance a game developer's ability to create engaging and efficient games. The skills in this course are immediately applicable to game development.
Network Engineer
Network engineers design, implement, and manage computer networks. This course may be useful for network engineers, especially those working on network routing and optimization. Graph algorithms such as shortest path algorithms and minimum spanning trees are used to optimize network traffic and ensure efficient communication between devices. This course provides a theoretical and practical understanding of these algorithms, which can be applied to network design and management. This knowledge is essential for optimizing network performance.
Research Scientist
A research scientist, often requiring a PhD, conducts research and develops new technologies. This course may be useful for research scientists who work on graph theory or related fields. The course provides a comprehensive overview of graph algorithms and techniques that can be applied to various research problems. The coverage of advanced topics such as network flow and Euler tours may be particularly valuable for research scientists working on cutting-edge graph-related research. This course helps bolster core theoretical knowledge.
Robotics Engineer
Robotics engineers design, build, and program robots. This course may be useful for robotics engineers who work on path planning, navigation, and mapping. Graph algorithms such as Dijkstra's algorithm and A* search are commonly used in robotics to find optimal paths for robots to navigate through complex environments. The course may provide a solid foundation in graph theory and algorithms that can be applied to robotics problems. The topics concerning shortest path may be particularly helpful.
Data Scientist
A data scientist analyzes large datasets to extract meaningful insights and develop data-driven solutions. This course may be useful for data scientists working with graph-structured data. An understanding of graph algorithms such as network flow, shortest paths, and community detection is valuable for analyzing social networks, recommendation systems, and other complex relationships. The course provides a practical foundation in graph theory that can be applied to various data science problems. Although data scientists may not use all the techniques, they can apply the shortest path and data structure techniques to their work.
Operations Research Analyst
Operations research analysts, often requiring a master's degree, use mathematical and analytical methods to solve complex problems and optimize operations. This course may be useful for operations research analysts, especially those working on network optimization and logistics. Graph algorithms such as shortest path algorithms and network flow algorithms can be used to optimize transportation networks, supply chains, and other complex systems. The course may provide the necessary skills to improve efficiency.
Cybersecurity Analyst
Cybersecurity analysts protect computer systems and networks from cyber threats. This course may be useful for cybersecurity analysts, especially those working on network security and vulnerability analysis. Graph algorithms can be used to analyze network traffic, detect anomalies, and identify potential security breaches. This course may provide a solid foundation in graph theory that can be applied to cybersecurity problems. For example, cybersecurity analysts can use graph algorithms to perform tasks.
Artificial Intelligence Engineer
Artificial intelligence engineers design and build AI systems. This course may be useful for AI engineers who use graph-based approaches to solve problems. For example, graph search algorithms are often used in pathfinding and game playing. The course's coverage of graph representations, traversals, and shortest path algorithms may provide a solid foundation for implementing AI solutions that involve graphs. An AI engineer may find helpful background in these concepts.
Machine Learning Engineer
A machine learning engineer develops and deploys machine learning models. This course may be useful for machine learning engineers who work with graph-based machine learning techniques. Graph neural networks, graph embeddings, and other graph-based methods are increasingly used in various applications, such as social network analysis and recommendation systems. The course provides the necessary background in graph theory and algorithms to understand and implement these advanced techniques. A machine learning engineer may find the background helpful.
Database Administrator
Database administrators manage and maintain databases, often using graph databases to represent relationships between data. This course helps database administrators understand the underlying principles of graph theory, which are essential for designing and querying graph databases. Graph databases are increasingly used to model complex relationships in various domains. By taking this course database administrators can improve their ability to design and manage graph databases effectively. For those working with graph databases, this course may prove helpful.
Data Engineer
Data engineers build and maintain the infrastructure for data storage and processing. This course may be useful for data engineers who work with graph databases or graph processing frameworks. The course may help data engineers understand the underlying principles of graph theory and how to optimize graph data processing. The concepts and code examples may provide a valuable starting point for working with graph data at scale. A data engineer may find graph theory useful.
Quantitative Analyst
Quantitative analysts, often requiring a master's degree, develop mathematical and statistical models for financial analysis. This course may be useful for quantitative analysts who work with network models or graph-based data. For example, graph theory can be used to analyze financial networks, detect fraud, and optimize trading strategies. Although this is not the focus, the course may enhance a quantitative analyst's ability to apply graph theory to financial problems. In some cases, this may be helpful.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Graph Theory Algorithms for Competitive Programming.
Comprehensive textbook on algorithms, covering a wide range of topics including graph algorithms. It provides detailed explanations, pseudocode, and analysis of various algorithms, making it an excellent resource for understanding the theoretical foundations. It is commonly used in undergraduate and graduate courses in computer science and valuable reference for competitive programmers.
Is specifically tailored for competitive programming and covers a wide range of algorithms and data structures, including graph algorithms. It provides concise explanations and efficient implementations of various algorithms, making it a practical guide for competitive programmers. The book also includes numerous examples and exercises from competitive programming contests.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser