Whenever an agent crosses a path leading to another event, it starts to create an aggregate path to both (or multiple) events. Also when the agent finds a node with longer path than its own to the same event, it updates the routing table with the shorter paths.