As the Crow Flies
As president of a startup airline company, you have started a frequent flier program that rewards customers for every mile they travel. As a for-profit company, you have a vested interest in minimizing the number of frequent flier miles that a person can earn on any one trip. To get an idea of how many miles a customer could earn flying the existing network, you’ve decided to write a program.
- A passenger’s itinerary is one-way (no return flight).
- Every itinerary takes the shortest route from the departing city to the destination city.
- Frequent flier miles are counted "as the crow flies" (i.e., the shortest route across the earth’s surface that connects the cities along the route).
- The earth’s surface is a perfect sphere with radius 4000 miles.
A single data set has 3 components:
1. Header Line – A single line, "X Y", where X is the number of cities and Y is the number of flight legs in the airline’s network. Both will be positive integers less than 100.
2. City List – A list of cities and their locations, one city per line. The line will be of the format
"C LA NS LO EW" where:
- C is the name of the city (no spaces, alphabetical, first letter only upper case)
- LA is the degrees of latitude where the city is located (from 0 to 90)
- NS is the direction of latitude (‘N’orth or ‘S’outh of the equator)
- LO is the degrees of longitude where the city is located (from 0 to 180)
- EW is the direction of longitude (‘E’ast or ‘W’est of the prime meridian)
3. Flight List – A list of city pairs of the format "B C" representing different cities that are directly connected by flight legs, one pair per line. Note that "B C" is equivalent to "C B".
- Some longitude measurements can be represented in multiple ways (i.e., 180E = 180W)
- All degrees of latitude and longitude given in the input will be integers.
- The airline’s network is connected (i.e., there is at least one route between any two cities).
2 6 5 Northpole 90 N 87 E Southpole 90 S 180 W Equatorone 0 N 45 W Equatortwo 0 S 90 E Equatorthree 0 S 180 E Equatorfour 0 N 46 W Equatorone Equatortwo Equatortwo Equatorthree Equatorthree Equatorfour Northpole Equatortwo Southpole Equatorthree 2 1 Northpole 90 N 0 E Southpole 90 S 0 W Southpole Northpole
Equatorfour Equatorone Northpole Southpole