Editorial for Baltic OI '13 P3 - Pipes
Submitting an official solution before solving the problem yourself is a bannable offence.
Task
A connected, simple, graph on vertices and edges is given. Weights are assigned to all edges (they are integers but need not be positive). These weights are not known but for each vertex the sum of weights of the edges incident to it is given. Can the weights be determined uniquely? If yes, what are they?
Intended Solution
We will use graph theoretic terminology, seeing reservoirs as vertices and pipes as edges of a graph . For each edge , let be its weight. We allow to take integer values, with the following interpretation:
- if then of water is pumped into ,
- if then of water is drained from .
For each vertex , we know
which is the sum of weights of the edges incident to ( is the set of such edges). Note that gives linear equations for unknowns . There can be a unique solution only if (this is true even for integer values of ) . Moreover, as is connected, .
Suppose . Then is a tree and has a leaf (a vertex of degree one, that is, with exactly one incident edge). Pick a leaf and let be the vertex to which is joined by an edge. Then gives which is known. Remove together with the edge from and subtract from . The remaining graph is again a tree. Continue this process until a single vertex remains. Then has a unique solution which we have found.
Now suppose . Remove leaves as before, until there are no more leaves. What remains is a connected graph on vertices and edges where is the number of leaves removed. This is a cycle of length . If is even then there are multiple solutions (see Fig. 1).
If is odd, however, we have a unique solution. Indeed, suppose are the vertices in this order. From we have
so
This determines uniquely and having its value we can easily fill in the remaining weights: , and so on.
If , we know from earlier considerations that there is more than one possible solution.
Given a connected graph on vertices, we can do this in total time : find the initial leaves of and put them in a stack. Consider the top leaf: remove it and decrease the degree of its neighbour. Check if this degree is one: if yes, add the neighbour to the stack. Do this until no leaves remain. So the total time complexity is .
Remark
Observation can be made purely by combinatorial considerations without using any linear algebra. If is connected on vertices and at least edges then it contains at least two cycles. If one of them has even length, there cannot be a unique solution (Fig. 1). Assume they both have odd length. There are two cases.
- The cycles have at most one vertex in common. As is connected, there is a path that joins the cycles (we allow to be a single vertex). In Fig. 2, on the left is the case when has even length (that is, has an even number of edges) and on the right is the case when has odd length. In both cases, there is more than one solution.
- The cycles share at least two vertices. Let be one of the common vertices. Start at and follow one of the cycles until it intersects the other cycle. Let this intersection point be . There are three paths joining and , any pair of which intersect only at endpoints (see Fig. 3. Let , and be their lengths. Pairs of these paths form cycles of lengths , and . At least one of these numbers is even so there is a path of even length. Referring back to Fig. 1, we know there cannot be a unique solution.
Comments