Program Listing for File RemUnionFind.h

↰ Return to documentation for file (ADS/mfset/RemUnionFind.h)

/*--------------------------------------------------------------------------*/
/*-------------------------- File RemUnionFind.h ---------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/

#ifndef __ADS_RemUnionFind
 #define __ADS_RemUnionFind
                      /* self-identification: #endif constant */

/*--------------------------------------------------------------------------*/
/*------------------------------ INCLUDES ----------------------------------*/
/*--------------------------------------------------------------------------*/

#include "ADS/Contract.h"

#include <cstddef>
#include <cstdint>
#include <vector>

/*--------------------------------------------------------------------------*/
/*--------------------------- NAMESPACE ------------------------------------*/
/*--------------------------------------------------------------------------*/

namespace ADS {

/*--------------------------------------------------------------------------*/
/*--------------------------- CLASS RemUnionFind ---------------------------*/
/*--------------------------------------------------------------------------*/

class RemUnionFind {

/*--------------------------------------------------------------------------*/
 public:

 explicit RemUnionFind( std::size_t n = 0 );

 [[nodiscard]] std::size_t n( void ) const;

 [[nodiscard]] std::size_t count( void ) const;

 std::uint32_t find( std::uint32_t x );

 bool merge( std::uint32_t x , std::uint32_t y );

 bool same( std::uint32_t x , std::uint32_t y );

 [[nodiscard]] std::uint32_t parent( std::uint32_t x ) const;

/*--------------------------------------------------------------------------*/
 private:

 [[nodiscard]] bool forest( void ) const;

 std::vector< std::uint32_t > f_p;
 std::size_t f_count = 0;

 };  // end( class RemUnionFind )

/*--------------------------------------------------------------------------*/

}  // end( namespace ADS )

/*--------------------------------------------------------------------------*/
/*-------------------------- IMPLEMENTATION --------------------------------*/
/*--------------------------------------------------------------------------*/

#include "ADS/mfset/impl/RemUnionFind.tpp"

/*--------------------------------------------------------------------------*/

#endif  /* RemUnionFind.h included */

/*--------------------------------------------------------------------------*/
/*------------------------ End File RemUnionFind.h -------------------------*/
/*--------------------------------------------------------------------------*/