Pagini recente » Cod sursa (job #1685534) | Cod sursa (job #654562) | Cod sursa (job #896014) | Cod sursa (job #2275613) | Cod sursa (job #2175321)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
const int N=100001,M=500001;
pair <int,int> p[M];
vector <int> v[N];
int n,m,r[m],nr;
bool folosit[M];
int celalalt(pair <int,int> e, int x){
if(e.first==x)
return e.second;
return e.first;
}
void euler(int x){
int y,z;
for(int i=0;i<v[x].size();i++){
z=v[x][i];
if(!folosit[z]){
y=celalalt(p[z],x);
folosit[z]=true;
euler(y);
}
}
r[++nr]=x;
}
void afisare(){
for(int i=1;i<=n;i++)
if(v[i].size()%2!=0){
g<<-1;
return;
}
for(int i=1;i<=m;i++)
if(!folosit[i]){
g<<-1;
return;
}
for(int i=1;i<nr;i++)
g<<r[i]<<' ';
}
int main()
{
f>>n>>m;
for(int i=1;i<=m;i++){
int x,y;
f>>x>>y;
pair <int,int> e=make_pair(x,y);
p[i]=e;
v[x].push_back(i);
v[y].push_back(i);
}
euler(1);
afisare();
return 0;
}