6#include <gtest/gtest.h>
43 auto n = g.insert_node(1);
53 auto n1 = g.insert_node(1);
54 auto n2 = g.insert_node(2);
65 auto n1 = g.insert_node(1);
66 auto n2 = g.insert_node(2);
75 auto n1 = g.insert_node(1);
76 auto n2 = g.insert_node(2);
77 auto n3 = g.insert_node(3);
78 auto n4 = g.insert_node(4);
99 auto n1 = g.insert_node(1);
100 auto n2 = g.insert_node(2);
101 g.insert_arc(n1, n2);
104 auto n3 = g.insert_node(3);
105 auto n4 = g.insert_node(4);
106 g.insert_arc(n3, n4);
120 auto n1 = g.insert_node(1);
121 auto n2 = g.insert_node(2);
122 auto n3 = g.insert_node(3);
124 g.insert_arc(n1, n2);
140 auto n1 = g.insert_node(1);
141 auto n2 = g.insert_node(2);
142 auto n3 = g.insert_node(3);
144 g.insert_arc(n1, n2);
145 g.insert_arc(n2, n3);
146 g.insert_arc(n3, n1);
157 auto n1 = g.insert_node(1);
158 auto n2 = g.insert_node(2);
159 auto n3 = g.insert_node(3);
160 auto n4 = g.insert_node(4);
162 g.insert_arc(n1, n2);
163 g.insert_arc(n1, n3);
164 g.insert_arc(n2, n4);
165 g.insert_arc(n3, n4);
178 std::vector<Node*>
nodes;
180 for (
size_t i = 0; i < n; ++i)
181 nodes.push_back(g.insert_node(i));
183 for (
size_t i = 0; i < n; ++i)
184 for (
size_t j = i + 1; j < n; ++j)
190 for (
size_t i = 0; i < n; ++i)
191 for (
size_t j = 0; j < n; ++j)
198 std::vector<Node*>
nodes;
200 for (
size_t i = 0; i < n; ++i)
201 nodes.push_back(g.insert_node(i));
203 for (
size_t i = 0; i < n; ++i)
209 for (
size_t i = 0; i < n; ++i)
210 for (
size_t j = 0; j < n; ++j)
216 auto root = g.insert_node(0);
218 std::vector<Node*> current_level = {
root};
219 std::vector<Node*> all_nodes = {
root};
223 for (
int depth = 0; depth < 4; ++depth)
227 for (
auto parent : current_level)
229 auto left = g.insert_node(node_count++);
230 auto right = g.insert_node(node_count++);
232 g.insert_arc(parent, left);
233 g.insert_arc(parent, right);
237 all_nodes.push_back(left);
238 all_nodes.push_back(right);
254 auto center = g.insert_node(0);
255 std::vector<Node*>
leaves;
257 for (
int i = 1; i <= 20; ++i)
259 auto leaf = g.insert_node(i);
260 g.insert_arc(center,
leaf);
279 const size_t n = 100;
280 std::vector<Node*>
nodes;
282 for (
size_t i = 0; i < n; ++i)
283 nodes.push_back(g.insert_node(i));
285 for (
size_t i = 0; i < n - 1; ++i)
297 const size_t n = 500;
298 std::vector<Node*>
nodes;
300 for (
size_t i = 0; i < n; ++i)
301 nodes.push_back(g.insert_node(i));
303 for (
size_t i = 0; i < n - 1; ++i)
317 auto n1 = g.insert_node(1);
318 auto n2 = g.insert_node(2);
319 auto n3 = g.insert_node(3);
320 auto n4 = g.insert_node(4);
323 g.insert_arc(n1, n2);
324 g.insert_arc(n2, n4);
327 g.insert_arc(n1, n3);
328 g.insert_arc(n3, n4);
339 auto n1 = g.insert_node(1);
340 auto n2 = g.insert_node(2);
341 auto n3 = g.insert_node(3);
342 auto n4 = g.insert_node(4);
343 auto n5 = g.insert_node(5);
344 auto n6 = g.insert_node(6);
346 g.insert_arc(n1, n2);
347 g.insert_arc(n1, n3);
348 g.insert_arc(n2, n4);
349 g.insert_arc(n2, n5);
350 g.insert_arc(n3, n5);
351 g.insert_arc(n3, n6);
352 g.insert_arc(n4, n6);
353 g.insert_arc(n5, n6);
367 auto n = g.insert_node(1);
377 auto n1 = g.insert_node(1);
378 auto n2 = g.insert_node(2);
380 g.insert_arc(n1, n2);
381 g.insert_arc(n2, n1);
396 std::vector<Node*>
nodes;
398 for (
size_t i = 0; i < n; ++i)
399 nodes.push_back(g.insert_node(i));
402 for (
size_t i = 0; i < n; ++i)
415 std::vector<Node*>
nodes;
417 for (
size_t i = 0; i < n; ++i)
418 nodes.push_back(g.insert_node(i));
421 for (
size_t i = 0; i < n - 1; ++i)
436 std::vector<Node*>
nodes;
438 for (
size_t i = 0; i < n; ++i)
439 nodes.push_back(g.insert_node(i));
441 for (
size_t i = 0; i < n; ++i)
442 for (
size_t j = i + 1; j < n; ++j)
455 auto root = g.insert_node(0);
456 std::vector<Node*> all_nodes = {
root};
460 std::vector<Node*> current_level = {
root};
461 for (
int depth = 0; depth < 8; ++depth)
465 for (
auto parent : current_level)
467 auto left = g.insert_node(node_count++);
468 auto right = g.insert_node(node_count++);
470 g.insert_arc(parent, left);
471 g.insert_arc(parent, right);
475 all_nodes.push_back(left);
476 all_nodes.push_back(right);
493 auto n1 = g.insert_node(1);
494 auto n2 = g.insert_node(2);
495 g.insert_arc(n1, n2);
507 auto n1 = g.insert_node(1);
508 auto n2 = g.insert_node(2);
509 auto n3 = g.insert_node(3);
511 g.insert_arc(n1, n2);
512 g.insert_arc(n2, n3);
528 const size_t rows = 5;
529 const size_t cols = 5;
530 std::vector<std::vector<Node*>>
grid(rows, std::vector<Node*>(cols));
532 for (
size_t i = 0; i < rows; ++i)
533 for (
size_t j = 0; j < cols; ++j)
534 grid[i][j] = g.insert_node(i * cols + j);
537 for (
size_t i = 0; i < rows; ++i)
538 for (
size_t j = 0; j < cols - 1; ++j)
539 g.insert_arc(
grid[i][j],
grid[i][j + 1]);
542 for (
size_t i = 0; i < rows - 1; ++i)
543 for (
size_t j = 0; j < cols; ++j)
544 g.insert_arc(
grid[i][j],
grid[i + 1][j]);
554 auto center = g.insert_node(0);
556 std::vector<Node*>
rim;
558 for (
size_t i = 0; i < n; ++i)
559 rim.push_back(g.insert_node(i + 1));
562 for (
auto node :
rim)
563 g.insert_arc(center, node);
566 for (
size_t i = 0; i < n; ++i)
567 g.insert_arc(
rim[i],
rim[(i + 1) % n]);
581 std::vector<Node*> left, right;
583 for (
size_t i = 0; i < m; ++i)
584 left.push_back(g.insert_node(i));
586 for (
size_t i = 0; i < n; ++i)
587 right.push_back(g.insert_node(m + i));
607 auto n1 = g.insert_node(1);
608 auto n2 = g.insert_node(2);
609 g.insert_arc(n1, n2);
WeightedDigraph::Node Node
Graph_Node< int > Node
The graph type.
Graph_Arc< int > Arc
The node class type.
verfica si existe un camino entre dos nodos.
__gmp_expr< T, __gmp_binary_expr< __gmp_expr< T, U >, unsigned long int, __gmp_root_function > > root(const __gmp_expr< T, U > &expr, unsigned long int l)
DynArray< Graph::Node * > nodes
Main namespace for Aleph-w library functions.
Container2< typename Container1::Item_Type > filter(Container1 &container, Operation &operation)
Filter elements that satisfy operation.
@ Cycle
Graph has an Eulerian cycle.
DynList< T > maps(const C &c, Op op)
Classic map operation.
Default filter for filtered iterators on arcs.
Arc of graph implemented with double-linked adjacency lists.
List_Graph< Graph_Node< int >, Graph_Arc< int > > GT
TEST_F(TestPathTest, PathToSelf)
Generic graph and digraph implementations.