//Class representativa dos ramos que ligam vertices do grafo

template<class TV,class TR>
class grafolistadj;

template<class TV,class TR>
class vertice;

template<class TV,class TR>
class ramo
{
	friend class grafolistadj<TV,TR>;
	friend class vertice<TV,TR>;

	protected:
		TR rconteudo;
		vertice<TV,TR> * apv;
		ramo<TV,TR> * apr;
	public:
		ramo();
		ramo(const TR & rcont,vertice<TV,TR> * pv);

		//--------------------------------
		// Est. Info 2000/2001
		//--------------------------------

		TV getDestino() const
		{
			return apv->conteudo;
		}

		TR getPeso() const
		{
			return rconteudo;
		}

		bool operator==(const ramo<TV, TR>& o)
		{
			if (this->rconteudo == o.rconteudo && this->getDestino() == o.getDestino())
				return true;
			else
				return false;
		}

		//--------------------------------
		// Est. Info 2000/2001
		//--------------------------------

};

template<class TV,class TR>
ramo<TV,TR>::ramo()
{
	apv=apr=NULL;
}

template<class TV,class TR>
ramo<TV,TR>::ramo(const TR & rcont,vertice<TV,TR> *pv)
{
	rconteudo=rcont;
	apv=pv;
	apr=NULL;
}



