C++ Data Structure program, C/C++ Programming


A long time ago in a galaxy far, far away, the country Mafghanistan had n cities and m old roads, where each road connected a pair of cities. Due to the treacherous mountains, there was no road or even path between some cities (i.e., some cities were unreachable from others). During Operation Mafghanistan Freedom, which spread democracy across Mafghanistan like wildfire in Santa Barbara in the summer, the Mamerican forces evaporated all the old roads in Mafghanistan. As the Commanding General of the Mamerican forces, you are in charge of Operation Mafghan Reconstruction, which will build new roads in Mafghanistan subject to the following constraints:

Due to the treacherous mountains, you may build new roads only between the cities where old roads existed before Operation Mafghanistan Freedom.
You should build enough new roads such that if City A was reachable from City B via some old roads, City A must be reachable from City B via some new roads.
You should minimize the total lengths of the new roads to be built.
Define a region to be a set of cities that will be reachable from one another via some new roads. Find all the regions using algorithms with good asymptotic running times.

You may NOT use STL classes except the string class.


Read input from cin. The input contains the number of cities (n), the number of old roads (m), and a series of old roads where each road is represented by its two terminal cities and its length. Each city is represented by a unique integer from 0 to n-1. Each road length is represented by an integer. The following EBNF specifies the input. An example input is available in the hand out. Your program need not handle invalid input (such as invalid file format or invalid numbers representing cities).

::= *
::= * * ''\n''
::= * * ''\n''
::= * + + * ''\n''
::= +
::= ''0''|''1''|''2''|''3''|''4''|''5''|''6''|''7''|''8''|''9''
::= '' '' | ''\t''

On the first line, print

On the second line, print:

Print each region in the ascending order of the number of cities in the region. For each region:
On the first line, print:

Then, print each new road per line in the ascending order of the lengths of the roads. For each new road, print its two terminal cities represented by their numbers (print the smaller number before the larger number), and then the length of the road, as in the following example:
0 5 10
On the last line, print:

On the last line, print:

The output of your program must match the output of the reference program. In other words, if you run
diff my_output your_output
you should see no output from diff.

Your program must exit with the exit code 0, i.e., call return 0 from the function main() or call exit(0).

Determinism in comparison of equal values

To avoid non-determinism of your algorithm when two roads e1=(s1, t1) and e2=(s2, t2) have the same length, consider e1 to be shorter than e2 if and only if

min(s1, t1) < min(s2, t2), or
min(s1, t1) == min(s2, t2) and max(s1, t1) < max(s2, t2)
To avoid non-determinism of your algorithm when two regions r1={...} and r2={...} have the same number of roads, consider r1 to have fewer roads than r2 if and only if min(r1) < min(r2), where min(s) returns the smallest member of the set s. Note that regions are disjoint sets of cities.
Posted Date: 2/18/2013 6:15:31 AM | Location : United States

Related Discussions:- C++ Data Structure program, Assignment Help, Ask Question on C++ Data Structure program, Get Answer, Expert's Help, C++ Data Structure program Discussions

Write discussion on C++ Data Structure program
Your posts are moderated
Related Questions
Explain The Type Conversion in Expressions in c language? When variables and constants of different types are used in an expression they are all converted to same type. The com

What is the purpose of return values? Can you not return any values from a function? If you could what would he function look like?

Smugglers are becoming very smart day by day. Now they have developed a new technique of sending their messages from one smuggler to another. In their new technology, they are send

Program for Swapping the Two Integers                 For example, Swapping the two value                                 int x=4,y=6,t;                                 t

how to write a program using arrays

A string S is said to be "Super ASCII", if it contains the character frequency equal to their ascii values. String will contain only lower case alphabets (''a''-''z'') and the asci

An employee’s total weekly pay equals the hourly wage multiplied by the total number of regular hours plus any overtime pay. Overtime pay equals the total overtime hours multiplied

How to Define a Structure? Structure declarations are rather more complicated than array declarations, ever since a structure must be defined in terms of its individual members

Project Description: I have a code that works different on 64 bit and 32 bit system. Code is relative to some crypt functions, similar, but not equal to: I have to move fr

color representation 0,1,2,3,4,5,6,7,.......