gen-rooted-tree-graph.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "testlib.h"
  2. #include <iostream>
  3. #include <sstream>
  4. #include <fstream>
  5. #include <iomanip>
  6. #include <string>
  7. #include <cstdlib>
  8. #include <cstdio>
  9. #include <cstring>
  10. #include <cmath>
  11. #include <ctime>
  12. #include <climits>
  13. #include <cassert>
  14. #include <vector>
  15. #include <queue>
  16. #include <stack>
  17. #include <deque>
  18. #include <set>
  19. #include <map>
  20. #include <bitset>
  21. #include <utility>
  22. #include <algorithm>
  23. #define forn(i, n) for (int i = 0; i < int(n); i++)
  24. using namespace std;
  25. int main(int argc, char* argv[])
  26. {
  27. registerGen(argc, argv);
  28. int n = atoi(argv[1]);
  29. int t = atoi(argv[2]);
  30. vector<int> p(n);
  31. forn(i, n)
  32. if (i > 0)
  33. p[i] = rnd.wnext(i, t);
  34. printf("%d\n", n);
  35. vector<int> perm(n);
  36. forn(i, n)
  37. perm[i] = i;
  38. shuffle(perm.begin() + 1, perm.end());
  39. vector<int> pp(n);
  40. for (int i = 1; i < n; i++)
  41. pp[perm[i]] = perm[p[i]];
  42. for (int i = 1; i < n; i++)
  43. {
  44. printf("%d", pp[i] + 1);
  45. if (i + 1 < n)
  46. printf(" ");
  47. }
  48. printf("\n");
  49. return 0;
  50. }