#include <string>
#include <vector>
class Graph {
public:
Graph( const std::string & );
~Graph();
void print();
private:
struct GEdge;
struct GNode
{
std::string currency_type;
std::vector<GEdge> edges; // line 19
GNode( std::string name ) : currency_type( name ) {}
};
struct GEdge
{
int weight;
GNode * node; // node that the edge is pointed towards
GEdge( int weight, GNode* node )
: weight( weight ), node( node ) {}
};
GNode *source;
std::vector<GNode> nodes;
void add_node( const std::string & currency );
void add_edge( const GNode *& source, const GNode *& destination, int weight );
std::string bellman_ford( const GNode *&source );
};
int main()
{
}
ICAgICNpbmNsdWRlIDxzdHJpbmc+CiAgICAjaW5jbHVkZSA8dmVjdG9yPgoKICAgIGNsYXNzIEdyYXBoIHsKICAgIHB1YmxpYzoKICAgICAgICBHcmFwaCggY29uc3Qgc3RkOjpzdHJpbmcgJiApOwogICAgICAgIH5HcmFwaCgpOwoKICAgICAgICB2b2lkIHByaW50KCk7CgogICAgcHJpdmF0ZToKCiAgICAgICAgc3RydWN0IEdFZGdlOwoKICAgICAgICBzdHJ1Y3QgR05vZGUKICAgICAgICB7CiAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGN1cnJlbmN5X3R5cGU7CiAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEdFZGdlPiBlZGdlczsgLy8gbGluZSAxOQoKICAgICAgICAgICAgR05vZGUoIHN0ZDo6c3RyaW5nIG5hbWUgKSA6IGN1cnJlbmN5X3R5cGUoIG5hbWUgKSB7fQogICAgICAgIH07CgogICAgICAgIHN0cnVjdCBHRWRnZQogICAgICAgIHsKICAgICAgICAgICAgaW50IHdlaWdodDsKICAgICAgICAgICAgR05vZGUgKiBub2RlOyAvLyBub2RlIHRoYXQgdGhlIGVkZ2UgaXMgcG9pbnRlZCB0b3dhcmRzCgogICAgICAgICAgICBHRWRnZSggaW50IHdlaWdodCwgR05vZGUqIG5vZGUgKSAKICAgICAgICAgICAgICAgIDogd2VpZ2h0KCB3ZWlnaHQgKSwgbm9kZSggbm9kZSApIHt9CiAgICAgICAgfTsKCiAgICAgICAgR05vZGUgKnNvdXJjZTsKICAgICAgICBzdGQ6OnZlY3RvcjxHTm9kZT4gbm9kZXM7CgogICAgICAgIHZvaWQgYWRkX25vZGUoIGNvbnN0IHN0ZDo6c3RyaW5nICYgY3VycmVuY3kgKTsKICAgICAgICB2b2lkIGFkZF9lZGdlKCBjb25zdCBHTm9kZSAqJiBzb3VyY2UsIGNvbnN0IEdOb2RlIComIGRlc3RpbmF0aW9uLCBpbnQgd2VpZ2h0ICk7CiAgICAgICAgc3RkOjpzdHJpbmcgYmVsbG1hbl9mb3JkKCBjb25zdCBHTm9kZSAqJnNvdXJjZSApOwogICAgfTsKCiAgICBpbnQgbWFpbigpCiAgICB7CgogICAgfQo=