... | ... |
@@ -1370,6 +1370,7 @@ |
1370 | 1370 |
typedef typename Graph::Node Node; |
1371 | 1371 |
typedef typename Graph::NodeIt NodeIt; |
1372 | 1372 |
typedef typename Graph::Arc Arc; |
1373 |
if (NodeIt(graph) == INVALID) return true; |
|
1373 | 1374 |
Dfs<Graph> dfs(graph); |
1374 | 1375 |
dfs.init(); |
1375 | 1376 |
dfs.addSource(NodeIt(graph)); |
... | ... |
@@ -1545,17 +1546,16 @@ |
1545 | 1546 |
/// \brief Returns true when there are not parallel edges in the graph. |
1546 | 1547 |
/// |
1547 | 1548 |
/// Returns true when there are not parallel edges in the graph. |
1548 |
template <typename Digraph> |
|
1549 |
bool parallelFree(const Digraph& digraph) { |
|
1550 |
typename Digraph::template NodeMap<bool> reached(digraph, false); |
|
1551 |
for (typename Digraph::NodeIt n(digraph); n != INVALID; ++n) { |
|
1552 |
for (typename Digraph::OutArcIt a(digraph, n); a != INVALID; ++a) { |
|
1553 |
if (reached[digraph.target(a)]) return false; |
|
1554 |
|
|
1549 |
template <typename Graph> |
|
1550 |
bool parallelFree(const Graph& graph) { |
|
1551 |
typename Graph::template NodeMap<int> reached(graph, 0); |
|
1552 |
int cnt = 1; |
|
1553 |
for (typename Graph::NodeIt n(graph); n != INVALID; ++n) { |
|
1554 |
for (typename Graph::OutArcIt a(graph, n); a != INVALID; ++a) { |
|
1555 |
if (reached[graph.target(a)] == cnt) return false; |
|
1556 |
reached[graph.target(a)] = cnt; |
|
1555 | 1557 |
} |
1556 |
for (typename Digraph::OutArcIt a(digraph, n); a != INVALID; ++a) { |
|
1557 |
reached.set(digraph.target(a), false); |
|
1558 |
|
|
1558 |
++cnt; |
|
1559 | 1559 |
} |
1560 | 1560 |
return true; |
1561 | 1561 |
} |
... | ... |
@@ -1565,19 +1565,17 @@ |
1565 | 1565 |
/// |
1566 | 1566 |
/// Returns true when there are not loop edges and parallel edges in |
1567 | 1567 |
/// the graph. |
1568 |
template <typename Digraph> |
|
1569 |
bool simpleDigraph(const Digraph& digraph) { |
|
1570 |
typename Digraph::template NodeMap<bool> reached(digraph, false); |
|
1571 |
for (typename Digraph::NodeIt n(digraph); n != INVALID; ++n) { |
|
1572 |
reached.set(n, true); |
|
1573 |
for (typename Digraph::OutArcIt a(digraph, n); a != INVALID; ++a) { |
|
1574 |
if (reached[digraph.target(a)]) return false; |
|
1575 |
reached.set(digraph.target(a), true); |
|
1568 |
template <typename Graph> |
|
1569 |
bool simpleGraph(const Graph& graph) { |
|
1570 |
typename Graph::template NodeMap<int> reached(graph, 0); |
|
1571 |
int cnt = 1; |
|
1572 |
for (typename Graph::NodeIt n(graph); n != INVALID; ++n) { |
|
1573 |
reached[n] = cnt; |
|
1574 |
for (typename Graph::OutArcIt a(graph, n); a != INVALID; ++a) { |
|
1575 |
if (reached[graph.target(a)] == cnt) return false; |
|
1576 |
reached[graph.target(a)] = cnt; |
|
1576 | 1577 |
} |
1577 |
for (typename Digraph::OutArcIt a(digraph, n); a != INVALID; ++a) { |
|
1578 |
reached.set(digraph.target(a), false); |
|
1579 |
} |
|
1580 |
reached.set(n, false); |
|
1578 |
++cnt; |
|
1581 | 1579 |
} |
1582 | 1580 |
return true; |
1583 | 1581 |
} |
0 comments (0 inline)