Editorial for An Animal Contest 4 P5 - Neighbourly Neighbourhoods
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
In summary, this problem asks us to construct a directed graph of nodes with
edges, such that there are
SCC's (Strongly Connected Components) on the condition that
pairs
belong to the same SCC.
Consider the edge types for a graph with SCCs:
Edges within an SCC. For an SCC consisting of
nodes (size
), there are a maximum of
possible edges that can be formed.
Edges between SCCs. Consider all
pairs of SCCs. For an SCC with size
and another with size
,
edges can be formed between them.
The next step involves choosing distinct SCCs:
Subtask 1
Since , we pick the
SCCs to to be
. The size of the last SCC needs to be maximized, to maximize the number of edges that can be placed on the first condition listed above.
Subtask 2
Let be the maximum number of SCCs that can be created from the input. This can be finding the number of connected components of the
constraints with a DSU. If
, output
-1
. If , the largest
components (by size) must be considered as 1 SCC, to total
SCCs. The "largest" are being considered to maximize the number of edges to be placed on the first condition listed above.
Let be the size of the
-th SCC. For the
SCCs considered, each requires a minimum of
edges to satisfy the properties of an SCC, unless it is a single node. For example, if one set of nodes were
, the edges formed would be
.
If , there are not enough edges to satisfy the constraint of
edges, so output
-1
.
Finally if , for each SCC with size
you can add
more edges, and add edges between SCCs. Note that when constructing edges between SCCs, for each pair of SCCs (suppose SCC
and SCC
), edges must only flow from a node in
to a node in
, or vice versa. Accounting for both directions will unite
and
as 1 SCC, which needs to be avoided.
At this point, if we have already reached our required edges, we can simply output them and terminate our program. If
is still greater than the number of possible edges that can be added, output
-1
.
Time Complexity:
Comments