/**
         * Returns cycles count in the graph which length is equal
         * to the specified 'cycleLength' argument
         * @precondition cycleLength >= 3
         */
        public double calculateCyclesCount(int cyclesLenght)
        {
            /*TextWriter tw = new StreamWriter(@"C:\ComplexNetwork\Progress"
             + cyclesLenght.ToString() + ".txt", true);
             + tw.WriteLine("Execution start time = " + DateTime.Now);
             + tw.Flush();*/
            _cyclesCount     = 0;
            _working_threads = _verticesCount;
            for (int i = 0; i < _verticesCount; ++i)
            {
                _counters[i] = new PivotsCyclesCounter(this, _container, i, cyclesLenght);
                ThreadPool.QueueUserWorkItem(_counters[i].ThreadPoolCallback);
            }
            lock (this)
            {
                while (_working_threads > 0)
                {
                    Monitor.Wait(this);
                }
            }

            /*tw.WriteLine("Execution end time = " + DateTime.Now);
             * tw.Close();*/
            return(_cyclesCount);
        }
 /**
  * Returns cycles count in the graph which length is equal
  * to the specified 'cycleLength' argument
  * @precondition cycleLength >= 3
  */
 public double calculateCyclesCount(int cyclesLenght)
 {
     /*TextWriter tw = new StreamWriter(@"C:\ComplexNetwork\Progress"
         + cyclesLenght.ToString() + ".txt", true);
     tw.WriteLine("Execution start time = " + DateTime.Now);
     tw.Flush();*/
     _cyclesCount = 0;
     _working_threads = _verticesCount;
     for (int i = 0; i < _verticesCount; ++i)
     {
         _counters[i] = new PivotsCyclesCounter(this, _container, i, cyclesLenght);
         ThreadPool.QueueUserWorkItem(_counters[i].ThreadPoolCallback);
     }
     lock (this)
     {
         while (_working_threads > 0)
         {
             Monitor.Wait(this);
         }
     }
     /*tw.WriteLine("Execution end time = " + DateTime.Now);
     tw.Close();*/
     return _cyclesCount;
 }
 public CyclesParallelCounter(NonHierarchicContainer container)
 {
     _container     = container;
     _verticesCount = (int)_container.Size;
     _counters      = new PivotsCyclesCounter[_verticesCount];
 }