/// <summary>
        /// Método retorna true se passou outro obj, se ele tem o mesmo tipo
        /// e seus membros da esquerda-dir ão iguais para aqueles objts
        /// em consideracao.
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        public override bool Equals(object o)
        {
            if (o == null || o.GetType() != typeof(PairValueImplementaion <T>))
            {
                return(false);
            }
            PairValueImplementaion <T> vlrImp = (PairValueImplementaion <T>)o;

            return(vlrImp._t1.Equals(_t1) && vlrImp._t2.Equals(_t2));
        }
        public override K getPeso(T v1, T v2)
        {
            if (v1 == null || v2 == null)
            {
                throw new ArgumentNullException();
            }
            IValues <T> vl = new PairValueImplementaion <T>(v1, v2);

            if (!pesoAresta.ContainsKey(vl))
            {
                throw new ArgumentNullException();
            }
            return(pesoAresta[vl]);
        }
        public override bool removeAresta(T v1, T v2)
        {
            if (v1 == null || v2 == null)
            {
                throw new ArgumentNullException();
            }
            IValues <T> vl = new PairValueImplementaion <T>(v1, v2);

            if (arestaSet.Contains(vl))
            {
                arestaSet.Remove(vl);
                pesoAresta.Remove(vl);
                return(true);
            }
            return(false);
        }
        public override bool addAresta(T v1, T v2, K peso)
        {
            if (v1 == null || v2 == null || peso == null)
            {
                throw new ArgumentNullException();
            }
            if (!VerticeSet.Contains(v1) || !VerticeSet.Contains(v2))
            {
                return(false);
            }
            IValues <T> vlr = new PairValueImplementaion <T>(v1, v2);

            if (arestaSet.Contains(vlr))
            {
                return(false);
            }
            arestaSet.Add(vlr);
            pesoAresta[vlr] = peso;
            return(true);
        }