Pagini recente » Cod sursa (job #2027896) | Cod sursa (job #1066223) | Cod sursa (job #2558144) | Cod sursa (job #1559923) | Cod sursa (job #1115647)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
const int N=100001,M=500001;
struct Nod{
int y,i;
Nod(int a, int b){
y=a;
i=b;
}
};
vector<Nod> g[N];
vector<int> s;
bool edge[M];
int n,m;
void dfs(){
int x;
for(int i=1 ; i<=n ; i++){
if(g[i].size() & 1){
out<<"-1\n";
return;
}
}
s.push_back(1);
while(!s.empty()){
x=s.back();
while(!g[x].empty() && edge[g[x].back().i]){
g[x].pop_back();
}
if(!g[x].empty()){
edge[g[x].back().i]=true;
s.push_back(g[x].back().y);
} else {
s.pop_back();
out<<x<<' ';
}
}
}
int main(){
int x, y;
in>>n>>m;
for(int i=1 ; i<=m ; i++){
in>>x>>y;
g[x].push_back(Nod(y,i));
g[y].push_back(Nod(x,i));
}
dfs();
return 0;
}