This algorithm is the following. At the beginning an initiator process sends the broadcast message to all its neighbours. The process which receives the broadcast message for the first time sends the message to all its adjacent processes except for the one from which it received the message. In addition to this, it marks the sender of the first received broadcast message as its parent. Every process keeps track of broadcast messages it sends to adjacent processes by storing the receiver of each message in a set of expected acknowledgements, called ack. As long as ack is not empty the process waits to receive acknowledgements from processes stored in this set. On receiving an acknowledgement it deletes the sender from ack. When ack is an empty set then all acknowledgements are received, and the process sends an acknowledgement to its parent node and terminates the algorithm. Processes which receive a message broadcast despite having already decided for their parent node reply with an acknowledgement. This guarantees that every broadcast message will be answered by an acknowledgement. The algorithm is finished when the initiator received all acknowledgements.