  It is not difficult to think of applications that can be modelled as graph
problems in which placing some facility or commodity at a vertex has some
positive or negative effect on the values of all the vertices out to some
distance, and we want to be able to calculate quickly the cumulative effect on
any vertex's value at any time or the list of the most beneficial or most
detrimential effects on a vertex. In this paper we show how, given an
edge-weighted graph with constant-size separators, we can support the following
operations on it in time polylogarithmic in the number of vertices and the
number of facilities placed on the vertices, where distances between vertices
are measured with respect to the edge weights:
  Add (v, f, w, d) places a facility of weight w and with effect radius d onto
vertex v.
  Remove (v, f) removes a facility f previously placed on v using Add from v.
  Sum (v) or Sum (v, d) returns the total weight of all facilities affecting v
or, with a distance parameter d, the total weight of all facilities whose
effect region intersects the ``circle'' with radius d around v.
  Top (v, k) or Top (v, k, d) returns the k facilities of greatest weight that
affect v or, with a distance parameter d, whose effect region intersects the
``circle'' with radius d around v.
  The weights of the facilities and the operation that Sum uses to ``sum'' them
must form a semigroup. For Top queries, the weights must be drawn from a total
order.
