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: }