package road;

import java.util.List;

public class NodeData {
    private int level; // level of the nodes, 0 on the cycles
    private int root; // root of the tree containing the node
    private int height; // for a root r, height of T(r)
    private int length; // for a root r, length of the cycle containing r
    private int maxNodeNumber; // for a root r , number of maximal nodes of T(r)
    private int pred; // predecessor on the cycle containing the node (s0)
    private boolean isMaxRoot; // true is the node is the root of a maximal tree
    private int s; // node s for any node of positive level
    private List<IntPair> maxPredList; // list of (s_i,p_i) for a maximal root , i>=1
	private boolean mark; // s reached
	private IntTriple edge; // for r max root, in findStablePair
	

	public IntTriple getEdge() {
		return edge;
	}

    public void setEdge(IntTriple edge) {
		this.edge = edge;
    }
 

	
	public int getMaxNodeNumber() {
		return maxNodeNumber;
	}

    public void setMaxNodeNumber(int maxNodeNumber) {
		this.maxNodeNumber = maxNodeNumber;
    }
 
	
	public boolean getMark() {
			return mark;
		}

	public void setMark(boolean mark) {
			this.mark = mark;
	}
	
    public int getLength() {
		return length;
	}

	public void setLength(int length) {
		this.length = length;
	}

    public int getHeight() {
		return height;
	}

	public void setHeight(int height) {
		this.height = height;
	}

    public List<IntPair> getMaxPredList() {
		return maxPredList;
	}

	public void setMaxPredList(List<IntPair> maxPredList ) {
		this.maxPredList = maxPredList;
	}

	public boolean getIsMaxRoot () {
		return isMaxRoot;
	}

	public void setIsMaxRoot(boolean maxRoot) {
		this.isMaxRoot = maxRoot;
	}

	public int getLevel() {
		return level;
	}

	public void setLevel(int level) {
		this.level = level;
	}

	public int getPred() {
		return pred;
	}

	public void setPred(int pred) {
		this.pred = pred;
	}
	
	public int getRoot() {
		return root;
	}

	public void setRoot(int root) {
		this.root = root;
	}
	public int getS() {
		return s;
	}

	public void setS(int s) {
		this.s = s;
	}
	
	public NodeData(int level, int root) {
		super();
		this.level = level;
		this.root = root;
	}
	
	public NodeData() {
		this(0,0);
	}
	
	@Override 
	public String toString(){
		return "(" + level + "," + root  + "," + height + "," + length  + "," + pred + ","  + s + "," + isMaxRoot + "," + maxPredList + ")" + "\n";
	}
}
