Hello All,<br><br>   I am trying to identify which edges can be a part 
of perfect matching, given a graph that can hold multiple perfect 
matching sets. I can find the edges for one configuration, but not the 
other.<br><br>
   For example, if a 7 ring and a 5 ring are flush (as in the Azulene 
structure), then there is resonance, and two configuration of double 
bonds (perfect matching edges in this case). The edge between the two 
rings will never be part of a perfect set, under any configuration.<br>
<br>   However, I am only seeing one set of perfect edges and never the 
other. Even when I try to seed the other set by initializing a boolean edge
 map, I only see one configuration. How can I make this work?<br clear="all">
<br>   Please note: I am completely new to Lemon, and this bit of code is experimental.<br><br>#include <iostream><br>#include <lemon/list_graph.h><br>#include <lemon/matching.h><br>#include <lemon/concepts/graph.h><br>

#include <lemon/concepts/maps.h><br>#include <lemon/concepts/graph_components.h><br><div id=":142">#include <sstream><br>#include <vector><br>#include <queue><br>#include <cstdlib><br>
#include <lemon/smart_graph.h><br>
#include <lemon/lgf_reader.h><br>#include <lemon/math.h><br><br>using namespace std;<br>using namespace lemon;<br><br>GRAPH_TYPEDEFS(SmartGraph);<br><br>int main() {<br><br>    ListGraph g;<br><br>    ListGraph::Node a = g.addNode();<br>

    ListGraph::Node b = g.addNode();<br>    ListGraph::Node c = g.addNode();<br>    ListGraph::Node d = g.addNode();<br>    ListGraph::Node e = g.addNode();<br>    ListGraph::Node f = g.addNode();<br>    ListGraph::Node gee = g.addNode();<br>

    ListGraph::Node h = g.addNode();<br>    ListGraph::Node i = g.addNode();<br>    ListGraph::Node j = g.addNode();<br><br>    ListGraph::Edge ab = g.addEdge(a, b);<br>    ListGraph::Edge bc = g.addEdge(c, b);<br>    ListGraph::Edge cd = g.addEdge(c, d);<br>

    ListGraph::Edge ed = g.addEdge(e, d);<br>    ListGraph::Edge fb = g.addEdge(f, b);<br>    ListGraph::Edge fg = g.addEdge(f, gee);<br>    ListGraph::Edge gh = g.addEdge(gee, h);<br>    ListGraph::Edge hi = g.addEdge(h, i);<br>

    ListGraph::Edge ij = g.addEdge(j, i);<br>    ListGraph::Edge ja = g.addEdge(j, a);<br>    ListGraph::Edge ea = g.addEdge(e, a);<br><br>    ListGraph::EdgeMap<bool> edgeMap(g);<br>    edgeMap[ea] = true; //This never returns true after running!!!<br>

<br>    MaxMatching<ListGraph> mat_test(g);<br>    mat_test.matchingInit(edgeMap);<br>    mat_test.startSparse();<br>    mat_test.run();<br><br>    cout << "STATUS EDGE AB: (should always be false) " << mat_test.matching(ab) << endl;<br>

    cout << "STATUS EDGE BC: (should be opposite bool of EA) " << mat_test.matching(bc) << endl;<br>    cout << "STATUS EDGE EA: (should be opposite bool of BC) " << mat_test.matching(ea) << endl;<br>

<br>    return 0;<br>}</div><br clear="all"><br>Thank you for your time<br>