ICPC NEERC 2010 C - Cactus Revolution
View as PDFAdvanced Cave Megapolis (ACM) is a city that survives in the underground caves after the global nuclear war. The caves are connected by passages and the whole city map can be represented by a graph with caves being vertices and passages between them being nodes.
There is a revolution in the cave city. The whole population of the city
is evenly split into  parties that cannot agree on the common laws
that they should adopt. They had decided to split their city into 
districts and have each district's citizens impose the laws of their
liking upon themselves.
You are given a city map in the form of the graph and your task is to
write a program that partitions this graph into  equally sized
districts. Each district must form a connected subgraph that is
represented by the subset of the graph's vertices.
Fortunately, the number of vertices in the graph is divisible by  and
the graph representing the city happens to be a cactus - a connected
undirected graph in which every edge belongs to at most one simple
cycle. Intuitively, cactus is a generalization of a tree where some
cycles are allowed.
The example of a city map with  caves and its partitioning into 
districts is shown on the picture below.
Input Specification
The first line of the input contains three integer numbers , 
, and
 
. Here 
is the number of vertices in the graph. Vertices are numbered from 
 to
. Edges of the graph are represented by a set of edge-distinct paths,
where 
 is the number of such paths, 
 is the number of districts that
the city must be partitioned into, 
 is divisible by 
.
Each of the following  lines contains a path in the graph. A path
starts with an integer number 
 
followed by 
 integers from 
 to 
. These 
 integers
represent vertices of a path. Adjacent vertices in a path are distinct.
Path can go through the same vertex multiple times, but every edge is
traversed exactly once in the whole input. There are no multiedges in
the graph (there is at most one edge between any two vertices).
The graph in the input file is a cactus.
Output Specification
If it is possible to partition the vertices into  districts, write to
the output 
 lines with 
 integer numbers on each line. Each
line represents a district as a list of vertices' numbers that
constitute it. Vertex numbers must be listed in the ascending order in
the description of each district.
If the answer does not exist, write the single number -1.
Sample Input 1
15 3 3
9 1 2 3 4 5 6 7 8 3
7 2 9 10 11 12 13 10
5 2 14 9 15 10
Sample Output 1
4 5 6 7 8
10 11 12 13 15
1 2 3 9 14
Sample Input 2
4 2 2
3 1 2 3
2 2 4
Sample Output 2
-1
Comments