## Previous challenges Hi, it's been very long time from last Programming Challenge, and I'd like to revive the tradition. The point of programming challenge is to create your own solution, and if...

Hi, it's been very long time from last Programming Challenge, and I'd like to revive the tradition.

The point of programming challenge is to create your own solution, and if you're bored, even program it in your favourite programming language. Today's challenge isn't mine. It was created by ČVUT FIKS (year 5, season 2, challenge #4).

You need to transport plans for your quantum computer through Totalitatia. The problem is, that Totalitatia's government would love to have the plans. And they know you're going to transport the computer through the country. You'll receive number `N`

, which denotes number of cities on the map. Then, you'll get `M`

paths, each going from one city to another. Each path has `k`

traffic controls. They're not that much effective, but the less of them you have to pass, the better. *Find path from city A to city B, so the * City

**maximum**number of traffic controls between any two cities is minimal.

`A`

is always the first one (`0`

) and city `B`

is always the last one (`N-1`

).## Input format:

```
N
M
A1 B1 K1
A2 B2 K2
...
```

On the first two lines, you'll get numbers N (number of cities) and M (number of paths). Than, on next `M`

lines, you'll get definition of a path. The definition looks like `1 2 6`

, where `1`

is id of first city and `2`

is id of second city (delimited by a space). You can go from city 1 to city 2, or from city 2 to city 1. The third number (`6`

) is number of traffic controls.

## Output format:

Single number, which denotes maximum number of traffic controls encountered on one path.

Hint: This means, that path that goes via roads with numbers of traffic controls `4 4 4`

is better than path via roads with numbers of traffic controls `1 5 1`

. First example would have output `4`

, the second one would have output `5`

.

Example:

IN:

```
4
5
0 1 3
0 2 2
1 2 1
1 3 4
2 3 5
```

OUT:

```
4
```

Solution: The optimal path is either `0 2 1 3`

or `0 1 3`

.

## Bonus

- Describe time complexity of your algorithm.
- If multiple optimal paths exist, find the shortest one.
- Does your algorithm work without changing the core logic, if the source city and the target city is not known beforehand (it changes on each input)?
- Do you use special collection to speed up minimum value search?