Pagini recente » Cod sursa (job #903892) | Cod sursa (job #2238236) | Cod sursa (job #2000358) | Istoria paginii runda/ten1 | Cod sursa (job #974654)
Cod sursa(job #974654)
#include <fstream>
#include <vector>
#include <bitset>
#include <queue>
#include <algorithm>
#include <utility>
#include <string.h>
#include <stack>
using namespace std;
ifstream cin("euler.in");
ofstream cout("euler.out");
const int MAXN = 100005;
const int oo = (1<<31)-1;
typedef vector<int> Graph[MAXN];
typedef vector<int> :: iterator It;
Graph G;
stack<int> Stack;
int N, M;
const inline void CheckEulerProperty(){
for(int i = 1 ; i <= N ; ++ i){
if(!G[i].size() || G[i].size() & 1){
cout << "-1\n";
exit(EXIT_SUCCESS);
}
}
}
inline void DFs(){
Stack.push(1);
while(!Stack.empty()){
int x = Stack.top();
if(G[x].size()){
int y = G[x].back();
G[x].pop_back();
G[y].erase(find(G[y].begin(), G[y].end(), x));
Stack.push(y);
}
else{
Stack.pop();
if(!Stack.empty())
cout << x << " ";
}
}
}
int main()
{
cin >> N >> M;
for(int i = 1 ; i <= M ; ++ i){
int X, Y;
cin >> X >> Y;
G[X].push_back(Y);
G[Y].push_back(X);
}
CheckEulerProperty();
DFs();
cin.close();
cout.close();
return 0;
}