/*Header file of the PStep_CG1_DSSRPricingProblemProgress

Implementation can be found in PStep_CG1_DSSRPricingProblemProgress.cpp

This class represents the decremental state-space relaxation information
of a single pricing problem as used in column generator 1.

*/
/*
#ifndef _PSTEP_DSSRPRICINGPROBLEMPROGRESS_H
#define _PSTEP_DSSRPRICINGPROBLEMPROGRESS_H

#include <vector>
#include <forward_list>
#include "PStep_FinalLabel.h"

//Class used to represent the decremental state-space relaxation information
//of a single pricing problem as used in column generator 1.
class PStep_CG1_DSSRPricingProblemProgress{
public:
	
	//Reference to Neighbourhoods.at(i).at(j) represents neighbour j of customer i (0 is the first customer).
	std::vector<std::vector<int>>& CurrentDSSRNeighbourhoods;
	//Reference to CurrentNotInNeighbourhood
	//Not in neighborhood indicates whether a customer is not in the neighborhoud for the depot to depot pricing problem.
	//CurrentDSSRNotInNeighbourhood.at(i).at(j)=true if customer j is not a neighbor of customer i (0 is the first customer).
	std::vector<std::vector<bool>>& CurrentDSSRNotInNeighbourhood;

	//Reference to candidate labels
	std::forward_list<PStep_FinalLabel>& CandidateLabels;

	//Members used by PStep_AllPStepsDSSRAdder:
	//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

	//ToAdd[i][j] indicates whether customer j should be added to the CurrentDSSRNeighborhoods[i].
	//i=0 and j=0 represent the first customers.
	//WARNING: the memory of this member is not freed upon destruction of this object!!!
	bool** ToAdd;

	//Indicator indicating whether a forbidden cycle was found for this particular pricing problem,
	//meaning ToAdd can be used to update at least one neighborhood.
	bool ForbiddenCycleFound;

	//Constructor functions
	//------------------------------------------------------------------------------------

	//Basic constructor to set all references
	PStep_CG1_DSSRPricingProblemProgress(std::vector<std::vector<int>>& NewDSSRNeighbourhoods, std::vector<std::vector<bool>>& NewDSSRNotInNeighbourhood, std::forward_list<PStep_FinalLabel>& NewCandidateLabels)
		:CurrentDSSRNeighbourhoods(NewDSSRNeighbourhoods), CurrentDSSRNotInNeighbourhood(NewDSSRNotInNeighbourhood), CandidateLabels(NewCandidateLabels)
	{};

};

#endif*/