Canadian Computing Olympiad: 2013 Day 1, Problem 3
For your latest top-secret experiment, you will need a large quantity of Higgs bosons. To obtain these elusive particles, you will need to build a large hadron collider, a long circular tunnel that you can use to accelerate particles and smash them into each other.
You already have access to an extensive network of tunnels, which is guaranteed to be connected and free of cyclic paths. In other words, the existing tunnels form a tree structure. This system can be represented by junctions, labelled through , connected by tunnels, each of which connects two junctions. Tunnels can be traversed in either direction (i.e., if there is a junction from to , that junction also goes from to ).
By adding exactly one tunnel to the network, you can create a cyclic path, which you will use to build your large hadron collider. You wish to form the longest possible collider in this way, where we define length as the number of tunnels in a cycle. Also, you would like to compute the number of ways to do this– that is, the number of distinct pairs of junctions such that adding a tunnel between them forms a cycle of maximum length.
For example, in the following network, we can form a collider of length by building a tunnel between junctions and , or between and :
The first line of each test case will contain (), the number of junctions. The next lines will each contain two space-separated integers and , indicating that there is a tunnel between junctions and ().
The output should consist of a single line with two space-separated integers: the length of the longest possible collider, and the number of ways to achieve that length. Note that you may need a 64-bit integer to store the answer (
long long in C/C++,
LongInt in Pascal).
For test cases worth of the points, you may assume that .
5 1 3 2 3 3 4 4 5
Output for Sample Input