Advertisement
Kaidul

A

Jan 30th, 2013
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.97 KB | None | 0 0
  1. #include <algorithm>
  2. #include <bitset>
  3. #include <cctype>
  4. #include <cmath>
  5. #include <complex>
  6. #include <cstdio>
  7. #include <cstdlib>
  8. #include <cstring>
  9. #include <ctime>
  10. #include <deque>
  11. #include <fstream>
  12. #include <iostream>
  13. #include <list>
  14. #include <climits>
  15. #include <map>
  16. #include <memory>
  17. #include <queue>
  18. #include <set>
  19. #include <sstream>
  20. #include <stack>
  21. #include <string>
  22. #include <utility>
  23. #include <vector>
  24. #include <iomanip>
  25.  
  26. using namespace std;
  27.  
  28. #define REP(i,n) for(__typeof(n) i=0; i<(n); i++)
  29. #define FOR(i,a,b) for(__typeof(b) i=(a); i<=(b); i++)
  30. #define RFOR(i,a,b) for(__typeof(b) i=(a); i>(b); i--)
  31. #define RESET(t,value) memset((t), value, sizeof(t))
  32.  
  33. #define READ(f) freopen(f, "r", stdin)
  34. #define WRITE(f) freopen(f, "w", stdout)
  35.  
  36. #define PI acos(-1.0)
  37. #define INF (1<<30)
  38. #define eps 1e-8
  39. #define pb push_back
  40. #define ppb pop_back
  41. #define pii pair<int, int>
  42.  
  43. typedef long long int64;
  44.  
  45. #define Max 100000
  46. vector <int64> adj[Max], result;
  47. int64 color[Max];
  48. set <int64> s;
  49. int64 par[Max];
  50. int64 d[Max],f[Max];
  51. enum {white,grey,black };
  52.  
  53. void dfs_visit(int64 u) {
  54.     color[u]=grey;
  55.     for(int64 i=0; i<adj[u].size(); i++) {
  56.         if(color[adj[u][i]]==white) {
  57.             par[adj[u][i]]=u;
  58.             dfs_visit(adj[u][i]);
  59.         }
  60.     }
  61.     color[u]=black;
  62.     result.pb(u);
  63. }
  64. void _reset() {
  65.     REP(i, Max) adj[i].clear();
  66.     memset(color,white,Max);
  67.     memset(par,NULL,Max);
  68.     s.clear();
  69.     result.clear();
  70. }
  71. int main() {
  72.     //READ("inputs.txt");
  73.     int64 n, u, v, e;
  74.     while(cin >> n) {
  75.         _reset();
  76.         e = n * 2;
  77.         for(int64 i=0; i < e; i++) {
  78.             cin>>u>>v;
  79.             adj[u].pb(v);
  80.             adj[v].pb(u);
  81.             s.insert(u);
  82.             s.insert(v);
  83.         }
  84.         dfs_visit(1);
  85.         if(result.size() == n) {
  86.             REP(i, result.size()) cout << result[i] << " ";
  87.         } else cout << "-1";
  88.         cout << "\n";
  89.     }
  90.  
  91.     return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement