ICPC East Central NA Regional Contest 2016, Problem H
Venn diagrams were invented by the great logician John Venn as a way of categorizing elements belonging to different sets. Given two sets and
, two overlapping circles are drawn – a circle representing the elements of
, and another representing the elements of
. The overlapping region of the circles represents elements that belong to both
and
, i.e., the intersection of the two sets
. A classic Venn diagram might look like this:
Figure H.1
One of John's biggest fans was his grandson, Vin Vaughn Venn. Vin was inspired by his grandfather's diagrams, but Vin was a very creative individual. Simple overlapping circles struck Vin as too boring of a way to visualize the sometimes messy intersections of categories, so he set out to make his grandfather's diagrams more interesting. Just like Venn diagrams, Vin diagrams are used as a way of categorizing elements belonging to different sets and
, but the representation of each set is not required to be a circle. In fact, each set can have any shape as long as there is a single overlapping section for elements in the intersection of
and
.
In this problem, Vin diagrams will be laid out on a grid. Each set representation is a loop of X
characters, with one X
in each loop replaced by an A
or B
to identify the loop. All empty positions (both inside and outside of the loops) are represented by period (.
) characters, and the set of positions inside a loop is contiguous. Each loop character touches exactly two other loop characters either vertically or horizontally. Loops do not self-intersect, and other than the allowed horizontal/vertical paths and right angle connections, different parts of the loop do not touch (see Figures H.2 and H.3 below).
![]() Figure H.2: Two legal loops |
![]() Figure H.3: Two illegal loops |
Loops and
intersect at exactly two points. Loop intersection points always follow the pattern shown in Figure H.4 (including the four
.
positions around the intersection). No loop makes a right angle turn at an intersection point but always flows straight through the intersection, either vertically or horizontally. An example of legally intersecting loops is shown in Figure H.5.
![]() Figure H.4: Intersection point and surrounding positions |
![]() Figure H.5: Legally intersecting loops |
Input Specification
The input starts with two integers describing the number of rows and columns in the Vin diagram
. The following
rows each contain a string of
characters. All positions that are not part of loop
or loop
are marked with a period (
.
) character. The loop labels A
and B
are placed somewhere around the loops' perimeters at non-intersection positions and are never on the same loop.
Output Specification
Display, in order, the area of the Vin diagram exclusive to set , the area exclusive to set
, and the area of the intersection. Given the representation of Vin diagrams, the area of a section is defined as the number of periods (
.
) it encloses.
Sample Input 1
7 7
AXXXX..
X...X..
X.XXXXX
X.X.X.X
XXXXX.X
..X...X
..XXXXB
Sample Output 1
5 5 1
Sample Input 2
11 13
XXXXXXA......
X.....X......
X..XXXXXXXXX.
X..X..X....X.
X..X..XXX..XX
X..B....X...X
X..X.XXXX...X
X..X.X......X
XX.XXXXXX...X
.X...X..X.XXX
.XXXXX..XXX..
Sample Output 2
21 22 10
Comments