jacint@534: // -*- c++ -*- jacint@534: //randomGraph(i,j) gives a random graph on i nodes and j edges. jacint@534: #include <vector> jacint@534: #include <cstdlib> jacint@534: jacint@534: //#include <list_graph.h> jacint@534: //#include <time_measure.h> jacint@534: //#include <for_each_macros.h> jacint@534: //#include <bfs_iterator.h> jacint@534: //#include <bipartite_graph_wrapper.h> jacint@534: //#include <maps.h> jacint@534: //#include <max_flow.h> jacint@534: jacint@534: namespace hugo { jacint@534: jacint@534: jacint@534: /** jacint@534: * Inicializalja a veletlenszamgeneratort. jacint@534: * Figyelem, ez nem jo igazi random szamokhoz, jacint@534: * erre ne bizzad a titkaidat! jacint@534: */ jacint@534: void random_init() jacint@534: { jacint@534: unsigned int seed = getpid(); jacint@534: seed |= seed << 15; jacint@534: seed ^= time(0); jacint@534: jacint@534: srand(seed); jacint@534: } jacint@534: jacint@534: jacint@534: /** jacint@534: * Egy veletlen int-et ad vissza 0 es m-1 kozott. jacint@534: */ jacint@534: int random(int m) jacint@534: { jacint@534: return int( double(m) * rand() / (RAND_MAX + 1.0) ); jacint@534: } jacint@534: jacint@534: jacint@534: template<typename Graph> jacint@534: void randomGraph (Graph& g, int n, int m) { jacint@534: typedef typename Graph::Node Node; jacint@534: g.clear(); jacint@534: std::vector<Node> nodes; jacint@534: for (int i=0; i<n; ++i) jacint@534: nodes.push_back(g.addNode()); jacint@534: for (int i=0; i<m; ++i) jacint@534: g.addEdge(nodes[random(n)], nodes[random(n)]); jacint@534: } jacint@534: jacint@534: }