Pagini recente » Cod sursa (job #543915) | Cod sursa (job #930) | Cod sursa (job #74020) | Cod sursa (job #3162625) | Cod sursa (job #2735097)
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
const int N=100005,M=500005;
vector<int> a[N],c;
struct muchie
{
int x,y;
bool anulat;
};
muchie e[M];
void euler(int x)
{
for (int j=a[x].size()-1;j>=0;j--)
{
int i=a[x][j];
a[x].pop_back();
if (e[i].anulat) continue;
int y=e[i].x+e[i].y-x;
e[i].anulat=true;
euler(y);
}
out<<x<<" ";
}
int vec[N+2];
int main()
{
int n,m;
in>>n>>m;
int u,v;
for (int i=1;i<=m;i++)
{
in>>u>>v;
vec[u]++;
vec[v]++;
a[u].push_back(i);
a[v].push_back(i);
e[i].x=u;
e[i].y=v;
}
for (int i=1;i<=n;i++)
{
if (vec[i]%2!=0)
{
out<<-1;
return 0;
}
}
euler(1);
in.close();
out.close();
return 0;
}