本文整理汇总了C++中Digraph::erase方法的典型用法代码示例。如果您正苦于以下问题:C++ Digraph::erase方法的具体用法?C++ Digraph::erase怎么用?C++ Digraph::erase使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Digraph
的用法示例。
在下文中一共展示了Digraph::erase方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FixedMaxFlow
bool GraphUtils::FixedMaxFlow(Digraph& dg, Weight& w, double Q)
{
Digraph::Node sn, tn;
GraphUtils::AddVirtualSTNode(dg, sn, tn); // 处理多源多汇网络为单一源汇网络
Capacity low(dg,0.1);
Capacity high(dg,DBL_MAX);
Flow flow(dg);
// 分配固定风量
for(Digraph::ArcIt e(dg);e!=INVALID;++e)
{
if(w[e] > 0)
{
low[e] = w[e];
high[e] = w[e];
}
//cout<<low[e]<<" "<<high[e]<<endl;
}
//执行有上下界的最大流算法
ArcFilter arc_filter(dg ,true);
bool ret = MaxFlow_Bound(dg,arc_filter,sn,tn,Q,low,high,flow,false);
if(ret)
{
// 固定分量可分配,则分配所有分支的风量
for(Digraph::ArcIt e(dg);e!=INVALID;++e)
{
w[e] = flow[e];
//cout<<"w(e"<<dg .id(e)<<")="<<w[e]<<endl;
}
}
GraphUtils::DeleteOutArcs(dg, sn); // 删除虚拟源点的所有出边分支(虚拟分支)
GraphUtils::DeleteInArcs(dg, tn); // 删除虚拟源点的所有入边分支(虚拟分支)
dg.erase(sn); dg.erase(tn); // 删除虚拟源汇节点
return ret;
}