## What will I learn?

In this puzzle you first have to program a pathfinding algorithm.

Then you compute the list of all possible actions and extrapolate future possibilities.

You combine the two previous algorithms using complex data structure like a graph of nodes.

You have to optimize your algorithm to reduce the number of combinations in order to decrease the computation time of your program.

## LEARN ALGORITHMS ASSOCIATED WITH THIS PUZZLE

Shortest paths with Dijkstra’s Algorithm by Racso#### External resources

Graph TheoryTreeTree traversalDepth First SearchA*BacktrackingDijkstra## Statement

This problem plays out on a graph where a “virus” moves from nodes to nodes, looking for an exit. There are several exits and you have to cut access to these exits by finding the best link to cut each turn, from the limited amount of cutable links. You will manage complex data structure like a tree where all nodes can store a graph.

A higher resolution is required to access the IDE

## Story

The Skynet network is still active, although the Resistance's virus is spreading. Help the virus spread by cutting out Skynet's resources. The fate of Humanity depends on you.

*This difficult puzzle is the second of the two exercises proposed for the challenge « Skynet Finale ». Before you solve it, get started with the previous level, « Skynet Revolution - Episode 1 », an easier version of this puzzle.*