//**************************************************************************
//   g++ -g -I$(LINKBASE)/include FlowInfo.cc  MaxflowExample.cc        \
//                MaxflowTemplates.cc -o MaxflowExample -L$LINKLIBDIR   \
//                -lgen -lalg -lgraph -lbasic -lm
//**************************************************************************
#include<iostream.h>
#include <LINK/basic/Set.h>
#include <LINK/graph/DBinGraph.h>
#include "ProgFlowInfo.h"

ostream& operator<<(ostream& os, const Collection<FlowInfo>& c);
ostream& operator<<(ostream& os, const Container<FlowInfo>& c);

DBinGraph* GenFlowNetwork(int n, 	// number of vertices
			  int max, 	// maximum capacity 
			  int trials,   // #trials looking for connected g
			  float p);	// edge probability

int Maxflow(Graph* graph);		// assign "flowvalue" attribute

main()
{
	int max_flow;
	FlowInfo *fl[2];
	DBinGraph *dg;
	Set<FlowInfo> fl_set;
	for (int i=0; i<2; i++) {
		dg = GenFlowNetwork(4, 10, 500, 0.30);
		max_flow = Maxflow(dg);
		fl[i] = new FlowInfo(dg, max_flow);
		fl_set.insert(*fl[i]); 
	}
	Iterator<FlowInfo> next(&fl_set);
	FlowInfo fw;
	while (next(fw))
		cout << ":::" << fw << endl;
	fl_set.clear();
	delete [] fl;
}
