Editorial for DMOPC '21 Contest 4 P4 - Christmas Graph
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Subtask 1
This subtask was created to reward brute force solutions.
Time Complexity: 
Subtask 2
There are many possible solutions with quadratic time complexity, of which we present one. First of all, let's direct all the edges added towards the respective randomly chosen nodes, so that the result becomes a functional graph. By linearity of expectation, the expected number of components is equivalent to , where 
 is the expected number of components of size 
. To compute 
, assume we know the number of connected functional graphs of size 
 with no self-loops 
. Then, for any of the 
 sets of 
 nodes, the probability that they form a single component is
because there are  ways to have the 
 nodes in the set form a component and 
 total ways to direct edges between the 
 nodes not in the set. So, again by linearity of expectation, 
 can be expressed as
It remains to calculate  for all values of 
. Let's first initialize all 
 to 
 and then subtract away the number of graphs with more than a single component. We now do the subtractions by establishing recursive relations. For any fixed 
, focus on the component of a single node 
. If there are 
 nodes in the component of node 
, then there are 
 ways to choose the nodes in the component of 
, 
 different ways for them to form a component, and 
 total ways to direct edges between the 
 nodes not in 
's component. So, for every 
 from 
 to 
, we should subtract
from , which concludes the solution.
Time Complexity: 
Subtask 3
It is helpful to note that the number of components in a functional graph is equal to the number of cycles in the graph. We may therefore calculate the expected number of cycles instead. By linearity of expectation, the expected number of cycles is equivalent to , where 
 is the expected number of cycles of size 
. Note that for any set of 
 nodes, the probability that they form a cycle is 
 because there are 
 cycles of length 
 and each of the 
 nodes has a 
 chance of pointing towards the correct node that comes next in the cycle. So, again by linearity of expectation, 
 can be expressed as
This can easily be computed in constant time with some precomputation.
Time Complexity: 
Comments