Advertisement
vlatkovski

Rekonstrukcija (државен '16) za 4/10 (PS. cudno e)

Mar 21st, 2018
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. struct p {
  5.     int x = -1;
  6.     int y = -1;
  7. };
  8.  
  9. int main()
  10. {
  11. //    std::ios::sync_with_stdio(false);
  12. //    freopen("in.txt", "r", stdin);
  13. //    freopen("out.txt", "w", stdout);
  14.     int k;
  15.     cin >> k;
  16.     map<int, p> m;
  17.     for (int i = 0; i < k-1; ++i) {
  18.         int a, b;
  19.         cin >> a >> b;
  20.         if (m[a].x == -1) m[a].x = b;
  21.         else m[a].y = b;
  22.         if (m[b].x == -1) m[b].x = a;
  23.         else m[b].y = a;
  24.     }
  25.     vector<int> r[2] = {{0}, {k}};
  26.     //(-1), 0, ...
  27.     //(-1), k, ...
  28.     int prev_r;
  29.     for (int i = 0; i < 2; ++i) {
  30.         prev_r = -1;
  31.         while (true) {
  32.             bool f = 1;
  33.             auto it = m.find(r[i].back());
  34.             if (it != m.end()) {
  35.                 if (it->second.x == prev_r) {
  36.                     prev_r = r[i].back();
  37.                     r[i].push_back(it->second.y);
  38.                 } else { // y = prev_r
  39.                     prev_r = r[i].back();
  40.                     r[i].push_back(it->second.x);
  41.                 }
  42.             } else {
  43.                 break;
  44.             }
  45.         }
  46.     }
  47.     for (int i = 0; i < r[0].size()-1; ++i) cout << r[0][i] << " ";
  48.     for (int j = r[1].size()-2; j >= 0; --j) cout << r[1][j] << " "; //j=(size-1)-1
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement