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 -------------------------*/
/*--------------------------------------------------------------------------*/