private void test(int seed) {
    RandomGraphGenerator rg = new RandomGraphGenerator(seed);
    rg.setNodeCount(100);
    rg.setEdgeCount(300);
    rg.allowCycles(true);

    Graph graph1 = rg.generate();

    EdgeMap cycleEdge = Maps.createIndexEdgeMap(new boolean[graph1.E()]);

    // find a set of edges whose reversal make the given graph
    // acyclic.  reverse whose edges
    t1.start();
    Cycles.findCycleEdges(graph1, cycleEdge);
    int count1 = 0;
    for (EdgeCursor ec = graph1.edges(); ec.ok(); ec.next()) {
      if (cycleEdge.getBool(ec.edge())) {
        graph1.reverseEdge(ec.edge());
        count1++;
      }
    }
    t1.stop();

    // check acyclicity of graph
    if (GraphChecker.isCyclic(graph1)) {
      D.bug("graph1 still contains cycles!!!");
      EdgeList cycle = Cycles.findCycle(graph1, true);
      error("cycle = " + cycle);
    }

    rg.setSeed(seed);
    Graph graph2 = rg.generate();

    // use alternative DFS based method to detect
    // with a set of cyclicity edges.
    t2.start();
    Cycles.findCycleEdgesDFS(graph2, cycleEdge);
    int count2 = 0;
    for (EdgeCursor ec = graph2.edges(); ec.ok(); ec.next()) {
      if (cycleEdge.getBool(ec.edge())) {
        graph2.reverseEdge(ec.edge());
        count2++;
      }
    }
    t2.stop();

    if (GraphChecker.isCyclic(graph2)) {
      D.bug("graph2 still contains cycles!!!");
      EdgeList cycle = Cycles.findCycle(graph2, true);
      error("cycle = " + cycle);
    }

    akku1 += count1;
    akku2 += count2;
  }