Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <bitset>
- #include <cctype>
- #include <cmath>
- #include <complex>
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <ctime>
- #include <deque>
- #include <fstream>
- #include <iostream>
- #include <list>
- #include <climits>
- #include <map>
- #include <memory>
- #include <queue>
- #include <set>
- #include <sstream>
- #include <stack>
- #include <string>
- #include <utility>
- #include <vector>
- #include <iomanip>
- using namespace std;
- #define REP(i,n) for(__typeof(n) i=0; i<(n); i++)
- #define FOR(i,a,b) for(__typeof(b) i=(a); i<=(b); i++)
- #define RFOR(i,a,b) for(__typeof(b) i=(a); i>(b); i--)
- #define RESET(t,value) memset((t), value, sizeof(t))
- #define READ(f) freopen(f, "r", stdin)
- #define WRITE(f) freopen(f, "w", stdout)
- #define PI acos(-1.0)
- #define INF (1<<30)
- #define eps 1e-8
- #define pb push_back
- #define ppb pop_back
- #define pii pair<int, int>
- typedef long long int64;
- #define Max 100000
- vector <int64> adj[Max], result;
- int64 color[Max];
- set <int64> s;
- int64 par[Max];
- int64 d[Max],f[Max];
- enum {white,grey,black };
- void dfs_visit(int64 u) {
- color[u]=grey;
- for(int64 i=0; i<adj[u].size(); i++) {
- if(color[adj[u][i]]==white) {
- par[adj[u][i]]=u;
- dfs_visit(adj[u][i]);
- }
- }
- color[u]=black;
- result.pb(u);
- }
- void _reset() {
- REP(i, Max) adj[i].clear();
- memset(color,white,Max);
- memset(par,NULL,Max);
- s.clear();
- result.clear();
- }
- int main() {
- //READ("inputs.txt");
- int64 n, u, v, e;
- while(cin >> n) {
- _reset();
- e = n * 2;
- for(int64 i=0; i < e; i++) {
- cin>>u>>v;
- adj[u].pb(v);
- adj[v].pb(u);
- s.insert(u);
- s.insert(v);
- }
- dfs_visit(1);
- if(result.size() == n) {
- REP(i, result.size()) cout << result[i] << " ";
- } else cout << "-1";
- cout << "\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement