gen-tree-graph.cpp 790 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include "testlib.h"
  2. #include <vector>
  3. using namespace std;
  4. int main(int argc, char* argv[])
  5. {
  6. registerGen(argc, argv, 1);
  7. int n = opt<int>(1);
  8. int t = opt<int>(2);
  9. vector<int> p(n);
  10. for (int i = 1; i < n; i++)
  11. p[i] = rnd.wnext(i, t);
  12. vector<int> perm(n);
  13. for (int i = 0; i < n; i++)
  14. perm[i] = i;
  15. shuffle(perm.begin() + 1, perm.end());
  16. vector<pair<int,int>> edges;
  17. for (int i = 1; i < n; i++)
  18. if (rnd.next(2))
  19. edges.push_back(make_pair(perm[i], perm[p[i]]));
  20. else
  21. edges.push_back(make_pair(perm[p[i]], perm[i]));
  22. shuffle(edges.begin(), edges.end());
  23. println(n);
  24. for (auto [a, b] : edges)
  25. println(a + 1, b + 1);
  26. return 0;
  27. }