src/work/athos/uf_demo.cc
author alpar
Thu, 31 Mar 2005 14:04:13 +0000
changeset 1284 b941d044f87b
parent 250 81a3d0abe5f3
permissions -rw-r--r--
SmartGraph can also split() a node!
athos@250
     1
//This is just a simple example program to test my union-find structure
athos@250
     2
athos@250
     3
//#include <marciMap.hh>
athos@250
     4
#include <union_find.h>
athos@250
     5
#include <iostream>
athos@250
     6
#include <list_graph.hh>
alpar@921
     7
using namespace lemon;
athos@250
     8
using namespace std;
athos@250
     9
athos@250
    10
int main (int, char*[])
athos@250
    11
{
athos@250
    12
  typedef ListGraph::NodeIt NodeIt;
athos@250
    13
  typedef ListGraph::EachNodeIt EachNodeIt;
athos@250
    14
  typedef ListGraph::EdgeIt EdgeIt;
athos@250
    15
athos@250
    16
  ListGraph flowG;
athos@250
    17
athos@250
    18
  
athos@250
    19
  //Marci példája
athos@250
    20
athos@250
    21
athos@250
    22
athos@250
    23
  NodeIt s=flowG.addNode();
athos@250
    24
  NodeIt v1=flowG.addNode();
athos@250
    25
  NodeIt v2=flowG.addNode();
athos@250
    26
  NodeIt v3=flowG.addNode();
athos@250
    27
  NodeIt v4=flowG.addNode();
athos@250
    28
  NodeIt t=flowG.addNode();
athos@250
    29
athos@250
    30
  ListGraph::NodeMap<int> component(flowG);
athos@250
    31
athos@250
    32
  component.set(s, -1);
athos@250
    33
  component.set(v1, -1);
athos@250
    34
  component.set(v2, -1);
athos@250
    35
  component.set(v3, -1);
athos@250
    36
  component.set(v4, -1);
athos@250
    37
  component.set(t, -1);
athos@250
    38
athos@250
    39
  UnionFind< NodeIt, ListGraph::NodeMap<int> > uf(component);
athos@250
    40
  cout<<"Merge s and v1: "<<uf.findAndMerge(s,v1)<<endl;
athos@250
    41
  cout<<"Merge s and v1: "<<uf.findAndMerge(s,v1)<<endl;
athos@250
    42
  cout<<"Merge s and v2: "<<uf.findAndMerge(s,v3)<<endl;
athos@250
    43
  for(EachNodeIt i=flowG.template first<EachNodeIt>(); i.valid(); ++i) {
athos@250
    44
athos@250
    45
    cout<<"Az "<<flowG.id(i)<<". pont itt van: "<<uf.find(i)<<endl;
athos@250
    46
    //std::cout << node_name.get(i) << ": ";
athos@250
    47
  }
athos@250
    48
}