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