package com.example.unodtantos.appqueology2.modelo;

import java.io.Serializable;
import java.util.ArrayList;

/**
 * Created by unodtantos on 03/04/2015.
 */
public class Vertice implements Serializable {

    /*--------------------------------------------------------------------------------------------*/

    // <editor-fold defaultstate="collapsed" desc="Atributos de la clase">

    Nodo nodo;
    Object Elemento;
    private int ei; // Cuando el grafo es no dirigido
    private int eo; // Cuando el grafo es dirigido  // Las que salen
    private int ein;// Cuando el grafo es dirigido  // Las que entran
    int pos;
    private int state; // Se utiliza para controlar si ha sido visitado en el bfs
    private int ciclo; //Se utiliza para controlar si ya ha sido visitado cuando se esta buscando un ciclo
    static int ce = 0;
    private int num_padres = 0; //se utiliza para controlar num veces visitado en eliminacion de redundantes
    private int num_hijos = 0; //se utiliza para controlar num veces visitado en eliminacion de redundantes
    private String ultimo_padre = "";
    private ArrayList<String> visitados = new ArrayList<>();

    // </editor-fold>

    /*--------------------------------------------------------------------------------------------*/

    // <editor-fold defaultstate="collapsed" desc="Constructores de la clase">

    /**
     * Constructor de la clase.
     */
    public Vertice() {
        ei = 0;
        eo = 0;
        ein = 0;
        Elemento = null;
        pos = ce++;
    }

    /**
     * Constructor de la clase.
     * @param O
     */
    public Vertice(Object O) {
        //nodo = n;
        Elemento = O;
        pos = ce++;
    }

    // </editor-fold>

    /*--------------------------------------------------------------------------------------------*/

    // <editor-fold defaultstate="collapsed" desc="Getters and Setters">

    /* Getters and Setters */

    public Nodo getNodo() {
        return nodo;
    }

    public void setNodo(Nodo nodo) {
        this.nodo = nodo;
    }

    public Object getElemento() {
        return Elemento;
    }

    public void setElemento(Object elemento) {
        Elemento = elemento;
    }

    public int getEi() {
        return ei;

    }

    public void setEi(int ei) {
        this.ei = ei;
    }

    public int getEo() {
        return eo;
    }

    public void setEo(int eo) {
        this.eo = eo;
    }

    public int getEin() {
        return ein;
    }

    public void setEin(int ein) {
        this.ein = ein;
    }

    public int getPos() {
        return pos;
    }

    public void setPos(int pos) {
        this.pos = pos;
    }

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }

    public static int getCe() {
        return ce;
    }

    public static void setCe(int ce) {
        Vertice.ce = ce;
    }

    public int getCiclo() {
        return ciclo;
    }

    public void setCiclo(int ciclo) {
        this.ciclo = ciclo;
    }

    public int getNum_padres() {
        return num_padres;
    }

    public void setNum_padres(int num_padres) {
        this.num_padres = num_padres;
    }

    public int getNum_hijos() {
        return num_hijos;
    }

    public void setNum_hijos(int num_hijos) {
        this.num_hijos = num_hijos;
    }

    public String getUltimo_padre() {
        return ultimo_padre;
    }

    public void setUltimo_padre(String ultimo_padre) {
        this.ultimo_padre = ultimo_padre;
    }

    public ArrayList<String> getVisitados() {
        return visitados;
    }

    public void setVisitados(ArrayList<String> visitados) {
        this.visitados = visitados;
    }

    // </editor-fold>

    /*--------------------------------------------------------------------------------------------*/

}