<div>Hi,</div>
<div> </div>
<div>I'm having trouble using the Preflow class with some inputs.  The following code demonstrates the problem with the attached .lgf file.</div>
<div> </div>
<div><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>int</p></font></font><font size="2"> TestMaxFlow(</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">const</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">char</font></font><font size="2">* digraphFile)
<p>{</p>
<p>lemon::SmartDigraph g;</p>
<p>lemon::SmartDigraph::ArcMap<</p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">__int64</font></font><font size="2">> cap(g);
<p>lemon::SmartDigraph::NodeMap<</p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">int</font></font><font size="2">> lab(g);
<p>lemon::SmartDigraph::Node s, t;</p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">try</font></font><font size="2"> {
<p>digraphReader(g, digraphFile).</p>
<p>arcMap(</p></font><font color="#a31515" size="2"><font color="#a31515" size="2">"capacity"</font></font><font size="2">, cap).
<p>nodeMap(</p></font><font color="#a31515" size="2"><font color="#a31515" size="2">"label"</font></font><font size="2">, lab).
<p>run();</p>
<p>} </p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">catch</font></font><font size="2"> (lemon::Exception& error) {
<p>std::cerr << </p></font><font color="#a31515" size="2"><font color="#a31515" size="2">"Error: "</font></font><font size="2"> << error.what() << std::endl;
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">return</font></font><font size="2"> -1;
<p>}</p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">for</font></font><font size="2"> (lemon::SmartDigraph::NodeIt nIt1(g); nIt1 != lemon::INVALID; ++nIt1)
<p>{</p>
<p>std::cout << </p></font><font color="#a31515" size="2"><font color="#a31515" size="2">"Processing node: "</font></font><font size="2"> << <a href="http://g.id">g.id</a>(nIt1) << </font><font color="#a31515" size="2"><font color="#a31515" size="2">" label: "</font></font><font size="2"> << lab[nIt1] << std::endl;
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">for</font></font><font size="2"> (lemon::SmartDigraph::NodeIt nIt2(g); nIt2 != lemon::INVALID; ++nIt2)
<p>{</p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">if</font></font><font size="2"> (nIt1 != nIt2 && <a href="http://g.id">g.id</a>(nIt1)) {
<p>std::cout << </p></font><font color="#a31515" size="2"><font color="#a31515" size="2">" processing node: "</font></font><font size="2"> << <a href="http://g.id">g.id</a>(nIt1) << </font><font color="#a31515" size="2"><font color="#a31515" size="2">" label: "</font></font><font size="2"> << lab[nIt1] << </font><font color="#a31515" size="2"><font color="#a31515" size="2">" inner node:"</font></font><font size="2"> << <a href="http://g.id">g.id</a>(nIt2) << </font><font color="#a31515" size="2"><font color="#a31515" size="2">" label: "</font></font><font size="2"> << lab[nIt2] << std::endl;
<p>lemon::Preflow<lemon::SmartDigraph, lemon::SmartDigraph::ArcMap<</p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">__int64</font></font><font size="2">> > pf(g, cap, nIt1, nIt2);
<p>pf.run();</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">return</font></font><font size="2"> 0;
<p>}</p>
<p>For certain source/target pairs, the code hangs or crashes.  I found early on that it would crash if source and target were the same node, so I exclude this case.  Are there other cases I need to exclude?  Also, the results seem to depend on the capacity values of the arcs.  For some values, the same set of nodes will run fine.</p>

<p>Allen</p></font></div>