The last data-structure we are going to cover is the graph. It is similar to a tree. In fact a tree is a special case of a graph, because a graph is also allowed to have circles, nodes that have a path to them self.

Graphs are useful data-structure to encode relations. For example a road-network or friendships.

To encode the most basic graphs you need two things. A list of nodes, sometimes called vertices, and a list of edges. The nodes represent objects and the edges represent their relation.

For example you could have a graph of a road-network, where every intersection is a node and every street is an edge.

With the edges and nodes you could encode more information, to use in your algorithm. So the intersections could have an GPS-position and the street some kind of cost, which indicates the amount of time you need to get to the other side.

In this task we provided you with a very simplistic graph, which encodes the relationship between two people. Your task is to find out, who likes one, which likes them back.