| [677] | 1 | #include <string> | 
|---|
|  | 2 | #include <iostream> | 
|---|
|  | 3 | #include <stdio.h> | 
|---|
|  | 4 |  | 
|---|
|  | 5 | #include "edgepathgraph.h" | 
|---|
| [921] | 6 | #include <lemon/list_graph.h> | 
|---|
|  | 7 | #include <lemon/smart_graph.h> | 
|---|
| [677] | 8 | #include <path.h> | 
|---|
|  | 9 |  | 
|---|
| [921] | 10 | using namespace lemon; | 
|---|
| [677] | 11 | using namespace std; | 
|---|
|  | 12 |  | 
|---|
|  | 13 | bool passed = true; | 
|---|
|  | 14 |  | 
|---|
|  | 15 | void check(bool rc) { | 
|---|
|  | 16 | passed = passed && rc; | 
|---|
|  | 17 | if(!rc) { | 
|---|
|  | 18 | cout << "Test failed!" << endl; | 
|---|
|  | 19 | } | 
|---|
|  | 20 | } | 
|---|
|  | 21 |  | 
|---|
|  | 22 | int main() | 
|---|
|  | 23 | { | 
|---|
|  | 24 | { | 
|---|
|  | 25 | EdgePathGraph<DirPath<ListGraph>, SmartGraph, ListGraph> EPGr; | 
|---|
|  | 26 | EPGr.addNode(); | 
|---|
|  | 27 | EPGr.addNode(); | 
|---|
|  | 28 | EPGr.addNode(); | 
|---|
|  | 29 | EPGr.addNode(); | 
|---|
|  | 30 | printf("%d node is in EPGr, after addition of 4 nodes.\n", EPGr.nodeNum()); | 
|---|
|  | 31 |  | 
|---|
|  | 32 | EdgePathGraph<DirPath<ListGraph>, SmartGraph, ListGraph> EPGr2(EPGr); | 
|---|
|  | 33 | printf("%d node is in EPGr2 created by copy constructor from EPGr.\n", EPGr2.nodeNum()); | 
|---|
|  | 34 |  | 
|---|
|  | 35 | EPGr2.addNode(); | 
|---|
|  | 36 | EPGr2.addNode(); | 
|---|
|  | 37 | printf("%d node is in EPGr2 after addition of 2 more nodes.\n", EPGr2.nodeNum()); | 
|---|
|  | 38 |  | 
|---|
|  | 39 | printf("%d nodes are in EPGr, before clear.\n", EPGr.nodeNum()); | 
|---|
|  | 40 | EPGr.clear(); | 
|---|
|  | 41 | printf("%d nodes are in EPGr, after clear.\n", EPGr.nodeNum()); | 
|---|
|  | 42 | printf("%d nodes are in EPGr2, after clear of EPGr.\n", EPGr2.nodeNum()); | 
|---|
|  | 43 | EPGr2.clear(); | 
|---|
|  | 44 | } | 
|---|
|  | 45 | { | 
|---|
|  | 46 | EdgePathGraph<DirPath<ListGraph>, SmartGraph, ListGraph> EPGr; | 
|---|
|  | 47 | //EdgePathGraph<DirPath<ListGraph>, SmartGraph, EdgePathGraph<DirPath<SmartGraph>, ListGraph, SmartGraph> > EPGr; | 
|---|
|  | 48 | EdgePathGraph<DirPath<SmartGraph>, ListGraph, SmartGraph> EPGr2; | 
|---|
|  | 49 |  | 
|---|
|  | 50 | typedef EdgePathGraph<DirPath<SmartGraph>, SmartGraph, ListGraph>::Node Node; | 
|---|
|  | 51 | typedef EdgePathGraph<DirPath<SmartGraph>, SmartGraph, ListGraph>::Edge Edge; | 
|---|
|  | 52 | typedef EdgePathGraph<DirPath<SmartGraph>, SmartGraph, ListGraph>::EdgeIt EdgeIt; | 
|---|
|  | 53 |  | 
|---|
|  | 54 | Node n0, n1, n2; | 
|---|
|  | 55 | Edge e0, e1, e2, e3, e4, e5; | 
|---|
|  | 56 |  | 
|---|
|  | 57 | ListGraph::Node m0, m1, m2, m3; | 
|---|
|  | 58 | ListGraph::Edge f0, f1, f2, f3, f4, f5; | 
|---|
|  | 59 |  | 
|---|
|  | 60 |  | 
|---|
|  | 61 | n0=EPGr.addNode(); | 
|---|
|  | 62 | n1=EPGr.addNode(); | 
|---|
|  | 63 | n2=EPGr.addNode(); | 
|---|
|  | 64 |  | 
|---|
|  | 65 | e0=EPGr.addEdge(n0,n1); | 
|---|
|  | 66 | e1=EPGr.addEdge(n1,n0); | 
|---|
|  | 67 | e2=EPGr.addEdge(n0,n2); | 
|---|
|  | 68 | e3=EPGr.addEdge(n2,n0); | 
|---|
|  | 69 | e4=EPGr.addEdge(n1,n2); | 
|---|
|  | 70 | e5=EPGr.addEdge(n2,n1); | 
|---|
|  | 71 |  | 
|---|
|  | 72 |  | 
|---|
|  | 73 | m0=EPGr2.addNode(); | 
|---|
|  | 74 | m1=EPGr2.addNode(); | 
|---|
|  | 75 | m2=EPGr2.addNode(); | 
|---|
|  | 76 | m3=EPGr2.addNode(); | 
|---|
|  | 77 |  | 
|---|
|  | 78 | f0=EPGr2.addEdge(m0,m3); | 
|---|
|  | 79 | f1=EPGr2.addEdge(m3,m0); | 
|---|
|  | 80 | f2=EPGr2.addEdge(m2,m3); | 
|---|
|  | 81 | f3=EPGr2.addEdge(m3,m2); | 
|---|
|  | 82 | f4=EPGr2.addEdge(m1,m2); | 
|---|
|  | 83 | f5=EPGr2.addEdge(m2,m1); | 
|---|
|  | 84 |  | 
|---|
|  | 85 | EPGr.sublayer=&(EPGr2.actuallayer); | 
|---|
|  | 86 | //EPGr.sublayer=&(EPGr2); | 
|---|
|  | 87 |  | 
|---|
|  | 88 | EPGr.projection[n0]=&m0; | 
|---|
|  | 89 | EPGr.projection[n1]=&m1; | 
|---|
|  | 90 | EPGr.projection[n2]=&m2; | 
|---|
|  | 91 |  | 
|---|
|  | 92 |  | 
|---|
|  | 93 | typedef DirPath<ListGraph> DPath; | 
|---|
|  | 94 |  | 
|---|
|  | 95 | //DPath P(EPGr2); | 
|---|
|  | 96 |  | 
|---|
|  | 97 | DPath P1(EPGr2.actuallayer);//0-2 | 
|---|
|  | 98 | DPath::Builder B1(P1); | 
|---|
|  | 99 | B1.pushBack(f0); | 
|---|
|  | 100 | B1.pushBack(f3); | 
|---|
|  | 101 | B1.commit(); | 
|---|
|  | 102 | cout << P1.length() << " hosszu utvonal letrehozva" << endl; | 
|---|
|  | 103 |  | 
|---|
|  | 104 | DPath P2(EPGr2.actuallayer);//2-0 | 
|---|
|  | 105 | DPath::Builder B2(P2); | 
|---|
|  | 106 | B2.pushBack(f2); | 
|---|
|  | 107 | B2.pushBack(f1); | 
|---|
|  | 108 | B2.commit(); | 
|---|
|  | 109 | cout << P2.length() << " hosszu utvonal letrehozva" << endl; | 
|---|
|  | 110 |  | 
|---|
|  | 111 | DPath P3(EPGr2.actuallayer);//0-1 | 
|---|
|  | 112 | DPath::Builder B3(P3); | 
|---|
|  | 113 | B3.pushBack(f0); | 
|---|
|  | 114 | B3.pushBack(f3); | 
|---|
|  | 115 | B3.pushBack(f5); | 
|---|
|  | 116 | B3.commit(); | 
|---|
|  | 117 | cout << P3.length() << " hosszu utvonal letrehozva" << endl; | 
|---|
|  | 118 |  | 
|---|
|  | 119 | DPath P4(EPGr2.actuallayer);//1-0 | 
|---|
|  | 120 | DPath::Builder B4(P4); | 
|---|
|  | 121 | B4.pushBack(f4); | 
|---|
|  | 122 | B4.pushBack(f2); | 
|---|
|  | 123 | B4.pushBack(f1); | 
|---|
|  | 124 | B4.commit(); | 
|---|
|  | 125 | cout << P4.length() << " hosszu utvonal letrehozva" << endl; | 
|---|
|  | 126 |  | 
|---|
|  | 127 |  | 
|---|
|  | 128 | EPGr.edgepath[e0]=&P3; | 
|---|
|  | 129 | EPGr.edgepath[e1]=&P4; | 
|---|
|  | 130 | EPGr.edgepath[e2]=&P1; | 
|---|
|  | 131 | EPGr.edgepath[e3]=&P2; | 
|---|
|  | 132 |  | 
|---|
|  | 133 | for(EdgeIt e(EPGr.actuallayer);EPGr.actuallayer.valid(e);EPGr.actuallayer.next(e)) | 
|---|
|  | 134 | { | 
|---|
|  | 135 | typedef DPath::EdgeIt PEdgeIt; | 
|---|
|  | 136 | PEdgeIt f; | 
|---|
|  | 137 |  | 
|---|
| [986] | 138 | cout << "Edge " << EPGr.id(EPGr.source(e)) << " - " << EPGr.id(EPGr.target(e)) << " in actual layer is"; | 
|---|
| [677] | 139 | if(EPGr.edgepath[e]) | 
|---|
|  | 140 | { | 
|---|
|  | 141 | cout << endl << "Path"; | 
|---|
|  | 142 | for(EPGr.edgepath[e]->first(f); EPGr.edgepath[e]->valid(f); EPGr.edgepath[e]->next(f)) | 
|---|
|  | 143 | { | 
|---|
| [986] | 144 | cout << " " << EPGr2.id(EPGr2.source(f)) << "-" << EPGr2.id(EPGr2.target(f)); | 
|---|
| [677] | 145 | } | 
|---|
| [986] | 146 | //cout << EPGr2.id(EPGr2.target(f)) << endl; | 
|---|
| [677] | 147 | cout << endl; | 
|---|
|  | 148 | } | 
|---|
|  | 149 | else | 
|---|
|  | 150 | { | 
|---|
|  | 151 | cout << " itself." <<endl; | 
|---|
|  | 152 | } | 
|---|
|  | 153 | } | 
|---|
|  | 154 |  | 
|---|
|  | 155 |  | 
|---|
|  | 156 | cout << "================================" << endl; | 
|---|
|  | 157 |  | 
|---|
|  | 158 | SmartGraph::EdgeMap<int> actlaymap(EPGr.actuallayer); | 
|---|
|  | 159 | //EdgePathGraph<DirPath<ListGraph>, SmartGraph, EdgePathGraph<DirPath<SmartGraph>, ListGraph, SmartGraph> > EPGr; | 
|---|
|  | 160 | ListGraph::EdgeMap<double> sublaymap(EPGr2.actuallayer); | 
|---|
|  | 161 |  | 
|---|
|  | 162 |  | 
|---|
|  | 163 | actlaymap[e1]=5; | 
|---|
|  | 164 |  | 
|---|
|  | 165 | //EdgeMap-ok kiirasa | 
|---|
|  | 166 |  | 
|---|
|  | 167 | cout << "EdgeMaps before addMap:" << endl; | 
|---|
|  | 168 |  | 
|---|
|  | 169 | cout << "actlaymap: "; | 
|---|
|  | 170 | for(EdgeIt e(EPGr.actuallayer);EPGr.actuallayer.valid(e);EPGr.actuallayer.next(e)) | 
|---|
|  | 171 | { | 
|---|
| [986] | 172 | cout << EPGr.id(EPGr.source(e)) << "-" << EPGr.id(EPGr.target(e)) << ":" << actlaymap[e] << " "; | 
|---|
| [677] | 173 | } | 
|---|
|  | 174 | cout << endl; | 
|---|
|  | 175 | cout << "sublaymap: "; | 
|---|
|  | 176 | for(ListGraph::EdgeIt e(EPGr2.actuallayer);EPGr2.actuallayer.valid(e);EPGr2.actuallayer.next(e)) | 
|---|
|  | 177 | { | 
|---|
| [986] | 178 | cout << EPGr2.id(EPGr2.source(e)) << "-" << EPGr2.id(EPGr2.target(e)) << ":" << sublaymap[e] << " "; | 
|---|
| [677] | 179 | } | 
|---|
|  | 180 | cout << endl; | 
|---|
|  | 181 | //EdgeMap-ok kiirasa#vege | 
|---|
|  | 182 |  | 
|---|
|  | 183 |  | 
|---|
|  | 184 | EPGr.addMap<int, double>(actlaymap, sublaymap); | 
|---|
|  | 185 |  | 
|---|
|  | 186 | //EdgeMap-ok kiirasa | 
|---|
|  | 187 |  | 
|---|
|  | 188 | cout << "EdgeMaps after addMap:" << endl; | 
|---|
|  | 189 |  | 
|---|
|  | 190 | cout << "actlaymap: "; | 
|---|
|  | 191 | for(EdgeIt e(EPGr.actuallayer);EPGr.actuallayer.valid(e);EPGr.actuallayer.next(e)) | 
|---|
|  | 192 | { | 
|---|
| [986] | 193 | cout << EPGr.id(EPGr.source(e)) << "-" << EPGr.id(EPGr.target(e)) << ":" << actlaymap[e] << " "; | 
|---|
| [677] | 194 | } | 
|---|
|  | 195 | cout << endl; | 
|---|
|  | 196 | cout << "sublaymap: "; | 
|---|
|  | 197 | for(ListGraph::EdgeIt e(EPGr2.actuallayer);EPGr2.actuallayer.valid(e);EPGr2.actuallayer.next(e)) | 
|---|
|  | 198 | { | 
|---|
| [986] | 199 | cout << EPGr2.id(EPGr2.source(e)) << "-" << EPGr2.id(EPGr2.target(e)) << ":" << sublaymap[e] << " "; | 
|---|
| [677] | 200 | } | 
|---|
|  | 201 | cout << endl; | 
|---|
|  | 202 | //EdgeMap-ok kiirasa#vege | 
|---|
|  | 203 |  | 
|---|
|  | 204 |  | 
|---|
|  | 205 | } | 
|---|
|  | 206 | } | 
|---|