public override int Grau(T vertice)
 {
     if (vertice == null)
     {
         throw new ArgumentNullException();
     }
     if (!VerticeSet.Contains(vertice))
     {
         throw new ArgumentNullException();
     }
     return(grauChegada(vertice) + grauSaida(vertice));
 }
 public override bool isAdjacente(T v1, T v2)
 {
     if (v1 == null || v2 == null)
     {
         throw new ArgumentNullException();
     }
     if (!VerticeSet.Contains(v1) || !VerticeSet.Contains(v2))
     {
         throw new ArgumentNullException();
     }
     return(arestaSet.Contains(new PairValueImplementaion <T>(v1, v2)));
 }
        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);
        }
        public override int grauSaida(T vertice)
        {
            if (vertice == null)
            {
                throw new ArgumentNullException();
            }
            if (!VerticeSet.Contains(vertice))
            {
                throw new ArgumentNullException();
            }
            int cont = 0;

            foreach (var v in arestaSet)
            {
                if (v.getSegundo().Equals(vertice))
                {
                    cont++;
                }
            }
            return(cont);
        }