/**
*	\file IKEPsolver.h
*	\brief	Class representing a vertex.
*	\author	Matteo Petris
*	\date	April 2021
*/

#ifndef SOLUTIONSTATS_H
#define SOLUTIONSTATS_H
#pragma once
#include "Header.h"
#include "Instance.h"
#include "Exchange.h"

/**
*	\class IKEPsolver.
*	\brief	Class implementing the solving procedure for the IKEP
*/
class SolutionStats {

protected:

	Instance* instance;					/**< instance KEP*/
	vector<Exchange> solution;

public:

	//CONSTRUCTORS (default, parametrized, copy)
	SolutionStats();
	SolutionStats(Instance* instanceKEP, const vector<Exchange>& solution);
	SolutionStats(const SolutionStats& s);

	//DESTRUCTOR
	~SolutionStats();

	//OPERATORS OVERLOADING (assignment, equality, not equal to)
	SolutionStats& operator=(const SolutionStats& s);
	friend bool operator==(const SolutionStats& s1, const SolutionStats& s2);
	friend bool operator!=(const SolutionStats& s1, const SolutionStats& s2);

	//METHODS
	string compute_length_stats() const;

	//GET METHODS

	//SET METHODS
	void set_solution(const vector<Exchange>& solution);

};

#endif //SOLUTIONSTATS_H