public IEnumerable <int> PathTo(int v)
 {
     if (HasPathTo(v))
     {
         var path = new NodeStack <int>();
         for (int i = v; i != _s; i = _pathTo[i])
         {
             path.Push(i);
         }
         path.Push(_s);
         while (!path.IsEmpty())
         {
             yield return(path.Pop());
         }
     }
     ;
 }