A country network consisting of N cities and N − 1 roads connecting them is 
given. Cities are labeled with distinct integers within the range [0..(N − 
1)]. Roads connect cities in such a way that each distinct pair of cities 
is connected either by a direct road or through a path consisting of direct 
roads. There is exactly one way to reach any city from any other city.

Starting out from city K, you have to plan a series of daily trips. Each 
day you want to visit a previously unvisited city in such a way that, on a 
route to that city, you will also pass through a maximal number of other 
unvisited cities (which will then be considered to have been visited). We 
say that the destination city is our daily travel target.

In the case of a tie, you should choose the city with the minimal label. 
The trips cease when every city has been visited at least once.

For example, consider K = 2 and the following network consisting of seven 
cities and six roads:

You start in city 2. From here you make the following trips:

    day 1 − from city 2 to city 0 (cities 1 and 0 become visited),
    day 2 − from city 0 to city 6 (cities 4 and 6 become visited),
    day 3 − from city 6 to city 3 (city 3 becomes visited),
    day 4 − from city 3 to city 5 (city 5 becomes visited).

The goal is to find the sequence of travel targets. In the above example we 
have the following travel targets: (2, 0, 6, 3, 5).

struct Results {
  int * D;
  int X;
}; 

Write a function:

struct Results solution(int K, int T[], int N); 

that, given a non-empty zero-indexed array T consisting of N integers 
describing a network of N cities and N − 1 roads, returns the sequence of 
travel targets.

Array T describes a network of cities as follows:

    if T[P] = Q and P ≠ Q, then there is a direct road between cities P and Q.

For example, given the following array T consisting of seven elements (this 
array describes the network shown above) and K = 2:

T[0] = 1
T[1] = 2
T[2] = 3
T[3] = 3
T[4] = 2
T[5] = 1
T[6] = 4

the function should return a sequence [2, 0, 6, 3, 5], as explained above.

Assume that:

    N is an integer within the range [1..90,000];
    each element of array T is an integer within the range [0..(N−1)];
    there is exactly one (possibly indirect) connection between any two 
distinct roads.

Complexity:

    expected worst-case time complexity is O(N);
    expected worst-case space complexity is O(N), beyond input storage (not 
counting the storage required for input arguments).

Elements of input arrays can be modified.

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].

Reply via email to