  Basic synchronous flooding proceeds in rounds. Given a finite undirected
(network) graph $G$, a set of sources $I \subseteq G$ initiate flooding in the
first round by every node in $I$ sending the same message to all of its
neighbours. In each subsequent round, nodes send the message to all of their
neighbours from which they did not receive the message in the previous round.
Flooding terminates when no node in $G$ sends a message in a round. The
question of termination has not been settled - rather, non-termination is
implicitly assumed to be possible.
  We show that flooding terminates on every finite graph. In the case of a
single source $g_0$, flooding terminates in $e$ rounds if $G$ is bipartite and
$j$ rounds with $e < j \leq e+d+1$ otherwise, where $e$ and $d$ are the
eccentricity of $g_0$ and diameter of $G$ respectively. For
communication/broadcast to all nodes, this is asymptotically time optimal and
obviates the need for construction and maintenance of spanning structures. We
extend to dynamic flooding initiated in multiple rounds with possibly multiple
messages. The cases where a node only sends a message to neighbours from which
it did not receive {\it any} message in the previous round, and where a node
sends some highest ranked message to all neighbours from which it did not
receive {\it that} message in the previous round, both terminate. All these
cases also hold if the network graph loses edges over time. Non-terminating
cases include asynchronous flooding, flooding where messages have fixed delays
at edges, cases of multiple-message flooding and cases where the network graph
acquires edges over time.
