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 |
}
|