Parameterized Partitions ExampleThe following program shows the operations that are supported by Partition,
essentially
#include <LEDA/core/partition.h>
#include <LEDA/core/array.h>
#include <LEDA/core/list.h>
using namespace leda;
int main()
{
Partition<int> P;
array<partition_item> A(100); //stores partition_items of P
//generate 100 blocks containing one item each
int i;
for(i=0; i<100; i++) {
partition_item p=P.make_block(i);
A[i]=p;
}
//unite all blocks with even number
for (i=2;i<100;i+=2) P.union_blocks(A[0],A[i]);
//unite all blocks with odd number and store items in list L
list<partition_item> L;
L.append(A[1]);
for (i=3;i<100;i+=2) {
P.union_blocks(A[1],A[i]);
L.append(A[i]);
}
std::cout << "Size of block containing last item in L: "
<< P.size(A[99]) << std::endl;
if (P.same_block(A[0],A[2])) {
std::cout << "A[0] and A[2] belong to one block" << std::endl;
}
P.split(L); //turn all items in L to singleton blocks
return 0;
}
|
See also:Manual Entries: |