fork(2) download
  1. #include <iostream>
  2. #include <map>
  3. using namespace std;
  4.  
  5. int main() {
  6. map < int ,pair<int,int>> back;
  7. map <int, bool> used;
  8. int a,b;
  9. while (cin >>a >> b){
  10. if (!back.count(a))
  11. back[a] = make_pair(b,0);
  12. else back[a] = make_pair( back[a].first, b);
  13.  
  14. if (!back.count(b))
  15. back[b] = make_pair(a,0);
  16. else back[b] = make_pair( back[b].first, a);
  17. }
  18. for (auto x : back){
  19. cout << x.first<<" : "<< x.second.first<<" "<<x.second.second<<endl;
  20. }
  21. for (auto x : back){
  22. auto R = x.first;
  23.  
  24. while (!used[R]){
  25. used[R] = true;
  26. cout << R<<" ";
  27. if (!used[back[R].first])
  28. R = back[R].first;
  29. else R = back[R].second;
  30. }
  31. cout << endl;
  32. }
  33.  
  34. return 0;
  35. }
Success #stdin #stdout 0s 16056KB
stdin
0 1
3 2
4 0
3 4
2 1
9 8
10 9
8 10
stdout
0 : 1 4
1 : 0 2
2 : 3 1
3 : 2 4
4 : 0 3
8 : 9 10
9 : 8 10
10 : 9 8
0 1 2 3 4 




8 9 10