Railroad Construction: Added initial boilerplate
This commit is contained in:
90
Railroad-Construction/README.md
Normal file
90
Railroad-Construction/README.md
Normal file
@@ -0,0 +1,90 @@
|
||||
# Lab 12: Railroad Construction
|
||||
|
||||
## Specification
|
||||
|
||||
There are _n_ cities that want to create a shared train network so that each
|
||||
pair of cities is connected by rail to each of the other cities. The cost of
|
||||
laying track is directly proportional to the distance between two cities. The
|
||||
cost to lay one mile of railroad track is $1M. Your task is to determine the
|
||||
lowest cost possible for laying the track so that all the cities are connected.
|
||||
|
||||
## Input
|
||||
|
||||
A single line containing the number n of cities followed by n city coordinate
|
||||
lines. Each of the coordinate lines is a pair of floating point numbers x y
|
||||
giving the coordinates of the cities on a square grid (for this problem you may
|
||||
assume the earth is flat and that the units of the grid structure are given in
|
||||
miles).
|
||||
|
||||
## Output
|
||||
|
||||
The minimum amount of money (in millions) that must be spent to create the
|
||||
railroad network. You can round this to a single decimal place.
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Sample Input</td>
|
||||
<td>Sample Output</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><pre>
|
||||
3
|
||||
0 1.5
|
||||
1 0
|
||||
0 0</pre></td>
|
||||
<td><pre>$2.5M</pre></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><pre>
|
||||
8
|
||||
0 0
|
||||
1 1
|
||||
0 1
|
||||
3 3
|
||||
4 5
|
||||
2 2
|
||||
1 0
|
||||
3 2</pre></td>
|
||||
<td><pre>$8.7M</pre></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Hints
|
||||
|
||||
1. You may use our [connected_components.py](./connected_components.py) Download
|
||||
connected_components.py in your code if you want., which will produce labels
|
||||
for each of the vertices that correspond to their component. You will need to
|
||||
use the adjacency list structure as suggested below if you wish to use this
|
||||
code in its unmodified state.
|
||||
2. You may have already envisioned a way to represent this problem as a graph.
|
||||
Draw the graph in the small example above on paper. How many edges does it
|
||||
have? If you are unsure of this, check with me before you start coding the
|
||||
solution.
|
||||
|
||||
## Adjacency List
|
||||
|
||||
Augment your dictionary/set based adjacency structure to use a dictionary for
|
||||
the edges (instead of a set as before). This will allow you to store the edge
|
||||
weights as the values of this second dictionary.
|
||||
|
||||
## Method/Programming requirement
|
||||
|
||||
Your program must implement either Borůvka's algorithm (I suggest you use
|
||||
Borůvka's) or Prims (not Kruskal). You must specify which algorithm you are
|
||||
implementing in the comments. Any other method to compute the answer will result
|
||||
in zero credit.
|
||||
|
||||
## Submission
|
||||
|
||||
Submit the code in a file named [cs412_railroad_a.py](./cs412_railroad_a.py) to
|
||||
Gradescope. If you use the supplied copy of
|
||||
[connected_components.py](./connected_components.py), you only need to import it
|
||||
into your code (it will be available on Gradescope, so, no need to submit). If
|
||||
you change connected_components.py, then please rename it and submit it as part
|
||||
of your code (or you can copy/paste the code into your lab and just submit a
|
||||
single file, it is up to you). You can import the code using the following
|
||||
python:
|
||||
|
||||
```
|
||||
from connected_components import count_and_label
|
||||
```
|
||||
Reference in New Issue
Block a user