random生成一顆樹

用了那個啥prufer還啥的序列的啥的東西,然後這是用在generator上的之類的,最後如果要改成一般的話就改main前面幾行就好了,大概吧。
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n;
  4. vector<int> t;
  5. set<int> s;
  6. multiset<int> tt;
  7. signed main(int argc, char* argv[]) {
  8. registerGen(argc, argv, 1);
  9. int n = atoi(argv[1]);
  10. for (int i = 1; i <= n - 2; ++i) t.push_back(rand() % n + 1);
  11. for (int i = 1; i <= n; ++i) s.insert(i);
  12. for (auto i:t) cout << i << " "; cout << endl;
  13. for (auto i:t) {
  14. if (s.find(i) != s.end()) s.erase(s.find(i));
  15. tt.insert(i);
  16. }
  17. for (auto i:t) {
  18. auto it = s.begin();
  19. cout << *it << " " << i << endl;
  20. s.erase(it);
  21. tt.erase(tt.find(i));
  22. if (tt.find(i) == tt.end())
  23. s.insert(i);
  24. }
  25. cout << *s.begin() << " " << *s.rbegin() << endl;
  26. }

留言

這個網誌中的熱門文章

Shellshock.io從入門到上手(針對單狙)(沒有圖片、影片版本)

[TIOJ] 1007燈泡問題