poj 1125 Stockbroker Grapevine
Input
Each person is numbered 1 through to the number of stockbrokers. The time taken to pass the message on will be between 1 and 10 minutes (inclusive), and the number of contacts will range between 0 and one less than the number of stockbrokers. The number of stockbrokers will range from 1 to 100. The input is terminated by a set of stockbrokers containing 0 (zero) people.
Output
It is possible that your program will receive a network of connections that excludes some persons, i.e. some people may be unreachable. If your program detects such a broken network, simply output the message "disjoint". Note that the time taken to pass the message from person A to person B is not necessarily the same as the time taken to pass it from B to A, if such transmission is possible at all.
---------------------------------------------------------------------------------------------
it's a basic dijkstra shortest path problem.
dijkstra algorithm :
choose a source vertex and set the its value 0
other vertices are set to infinite
while(Q != empty){
pick u = extract-min(Q)
for each v in adj(u) && v still in Q{
if(d(v) > d(u) + w(u,v)){
d(v)= d(u)+w(u,v)
parent(v) = u //record
}
}
}
although it's not complicate, I still feel unfamiliar with the structure of graph. actually, the data structure I use in this problem is quite simple and not practical at all. however, something in my implementation is still redundant :)......
int from;
int to; // vertex
int edge_value;
};
struct broker_info {
int num;
int path_value; // value of the vetex
map < int , edge > adjacency; // all the adjecent vertex from this broker
};
map < int , broker_info > broker1; // the information of this broker
another deficiency is that I didn't use heap or F tree store the graph,which makes the time complicity a little bit higher.
the STL has a heap template: make_heap() etc.
mistake :
initialize, recall that broker[i] will be changed in every loop of choosing new source vertex
Q.insert(i);
broker[i] = broker1[i];
}
转载于:https://www.cnblogs.com/ggppwx/archive/2010/12/27/1917670.html