## IOI '11 P2 - Race

View as PDF

Points: 20 (partial)
Time limit: 3.0s
Memory limit: 256M

Problem type
Allowed languages
C, C++

In conjunction with the IOI, Pattaya City will host a race: the International Olympiad in Racing (IOR) 2011. As the host, we have to find the best possible course for the race.

In the Pattaya-Chonburi metropolitan area, there are cities connected by a network of highways. Each highway is bidirectional, connects two different cities, and has an integer length in kilometers. Furthermore, there is exactly one possible path connecting any pair of cities. That is, there is exactly one way to travel from one city to another city by a sequence of highways without visiting any city twice.

The IOR has specific regulations that require the course to be a path whose total length is exactly kilometers, starting and ending in different cities. Obviously, no highway (and therefore also no city) may be used twice on the course to prevent collisions. To minimize traffic disruption, the course must contain as few highways as possible.

Write a procedure best_path(N,K,H,L) that takes the following parameters:

• – the number of cities. The cities are numbered through .
• – the required distance for the race course.
• – a two-dimensional array representing highways. For , highway connects the cities and .
• – a one-dimensional array representing the lengths of the highways. For , the length of highway is .

You may assume that all values in the array are between and , inclusive, and that the highways described by this array connect all cities as described above. You may also assume that all values in the array are integers between and , inclusive.

Your procedure must return the minimum number of highways on a valid race course of length exactly . If there is no such course, your procedure must return -1.

#### Examples

##### Example 1

Consider the case shown in Figure 1, where , ,

The course can start in city , go to city , and terminate in city . Its length will be exactly km + km = km, and it consists of two highways. This is the best possible course; therefore best_path(N,K,H,L) must return .

##### Example 2

Consider the case shown in Figure 2, where , ,

There is no valid course. In this case, best_path(N,K,H,L) must return -1.

##### Example 3

Consider the case shown in Figure 3, where , ,

One possible course consists of 3 highways: from city via city and city to city . Another course starts in city and goes via city to city . Both of these courses have length exactly km, as required. The second one is optimal, as there is no valid course with a single highway. Hence, best_path(N,K,H,L) must return .

• The network of highways forms the simplest possible line: For , highway connects cities and .
int best_path(int N, int K, int H[][2], int L[]);