src/work/athos/uf_demo.cc
author deba
Wed, 08 Sep 2004 12:06:45 +0000 (2004-09-08)
changeset 822 88226d9fe821
child 921 818510fa3d99
permissions -rw-r--r--
The MapFactories have been removed from the code because
if we use macros then they increases only the complexity.

The pair iterators of the maps are separeted from the maps.

Some macros and comments has been changed.
     1 //This is just a simple example program to test my union-find structure
     2 
     3 //#include <marciMap.hh>
     4 #include <union_find.h>
     5 #include <iostream>
     6 #include <list_graph.hh>
     7 using namespace hugo;
     8 using namespace std;
     9 
    10 int main (int, char*[])
    11 {
    12   typedef ListGraph::NodeIt NodeIt;
    13   typedef ListGraph::EachNodeIt EachNodeIt;
    14   typedef ListGraph::EdgeIt EdgeIt;
    15 
    16   ListGraph flowG;
    17 
    18   
    19   //Marci példája
    20 
    21 
    22 
    23   NodeIt s=flowG.addNode();
    24   NodeIt v1=flowG.addNode();
    25   NodeIt v2=flowG.addNode();
    26   NodeIt v3=flowG.addNode();
    27   NodeIt v4=flowG.addNode();
    28   NodeIt t=flowG.addNode();
    29 
    30   ListGraph::NodeMap<int> component(flowG);
    31 
    32   component.set(s, -1);
    33   component.set(v1, -1);
    34   component.set(v2, -1);
    35   component.set(v3, -1);
    36   component.set(v4, -1);
    37   component.set(t, -1);
    38 
    39   UnionFind< NodeIt, ListGraph::NodeMap<int> > uf(component);
    40   cout<<"Merge s and v1: "<<uf.findAndMerge(s,v1)<<endl;
    41   cout<<"Merge s and v1: "<<uf.findAndMerge(s,v1)<<endl;
    42   cout<<"Merge s and v2: "<<uf.findAndMerge(s,v3)<<endl;
    43   for(EachNodeIt i=flowG.template first<EachNodeIt>(); i.valid(); ++i) {
    44 
    45     cout<<"Az "<<flowG.id(i)<<". pont itt van: "<<uf.find(i)<<endl;
    46     //std::cout << node_name.get(i) << ": ";
    47   }
    48 }