当前位置: 首页>>代码示例>>C++>>正文


C++ Digraph::reverse方法代码示例

本文整理汇总了C++中Digraph::reverse方法的典型用法代码示例。如果您正苦于以下问题:C++ Digraph::reverse方法的具体用法?C++ Digraph::reverse怎么用?C++ Digraph::reverse使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Digraph的用法示例。


在下文中一共展示了Digraph::reverse方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: order

/*	@brief construct a SCC with a graph and compute 
 *		strongly connected component
 *	@param dg	Digraph
 */
SCC::SCC(const Digraph &dg){
	//initialize private menber
	marked = vector<bool>(dg.V(),false);
	__id = vector<int>(dg.V());
	__count = 0;
	for(int i=0; i<dg.V(); ++i){
		__id[i] = i;
	}

	//dg's reverse graph
	const Digraph rdg = dg.reverse();
	//rdg's order
	DFSOrder order(rdg);
	//reverse order of dg's reverse graph
	deque<int> reverseOrder = order.reverseOrder();
	//depth first searh in reverseOrder 
	__count = 0;
	int num = reverseOrder.size();
	for(int i=0; i<num; ++i){
		int v = reverseOrder[i];
		if( !marked[v] ){
			dfs(dg,v);
			//search one strongly connected component
			++__count;
		}
	}
}
开发者ID:ChengduoZhao,项目名称:cxxlib,代码行数:31,代码来源:digraph.cpp

示例2: DepthFirstOrder

KosarajuSCC::KosarajuSCC(Digraph& dg) {
	marked = new bool[dg.n()];
	for (int i = 0; i < dg.n(); i++)
		marked[i] = false;
	id = new int[dg.n()];
	count = 0;

	Digraph* dgR = dg.reverse();
	DepthFirstOrder* dforder = new DepthFirstOrder(*dgR);
	stack<int>& reverseOrder = dforder->reversePostOrder();
	delete dgR;

	while (!reverseOrder.empty()) {
		int v = reverseOrder.top();
		reverseOrder.pop();
		if (!marked[v]) {
			dfs(dg, v);
			count++;
		}
	}
	delete dforder;
}
开发者ID:therdes,项目名称:DataStructure,代码行数:22,代码来源:KosarajuSCC.cpp


注:本文中的Digraph::reverse方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。