Pagini recente » Cod sursa (job #3260670) | Cod sursa (job #2584412) | Cod sursa (job #179127) | Cod sursa (job #2311305) | Cod sursa (job #2735102)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
#define MAXN 500005
struct muchie
{
int x,y;
bool viz;
}e[MAXN];
int n,m;
vector<int> g[MAXN];
int Check()
{
for(int i = 1; i <= n; i++)
if (g[i].size() % 2 != 0)
return 0;
return 1;
}
void Euler(int node){
while(!g[node].empty()){
int i = g[node].back();
g[node].pop_back();
if(!e[i].viz){
int next = e[i].x + e[i].y - node;
e[i].viz = true;
Euler(next);
}
}
cout << node << " ";
}
int main()
{
cin >> n >> m;
for (int i = 1; i <= m; i++)
{
cin >> e[i].x >> e[i].y;
g[e[i].x].push_back(i);
g[e[i].y].push_back(i);
}
if (Check())
Euler(1);
else
cout << -1;
return 0;
}