#ifndef MINIMUSPANNINGTREE_H_
#define MINIMUSPANNINGTREE_H_

#include <set>
#include <map>
#include <list>
#include "float.h"
#include "networks/graph/RealWeightedGraph.h"

namespace cosi {

namespace algorithms {

namespace graph {

class MinimumSpanningTree {
public:
	MinimumSpanningTree(cosi::commstruct::graph::U_RealWeightedGraph* pN);
	virtual ~MinimumSpanningTree();
	void Run(Vertex pRoot);
	cosi::commstruct::graph::U_RealWeightedGraph* Get();
private:
	cosi::commstruct::graph::U_RealWeightedGraph* mN;
	Vertex mRoot;
	//predecessor tree
	std::map< int , int > mPi;
};

}

}

}

#endif /*MINIMUSPANNINGTREE_H_*/
