Pagini recente » Cod sursa (job #1619131) | Cod sursa (job #2021232) | Cod sursa (job #2417426) | Cod sursa (job #2050680) | Cod sursa (job #2735104)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("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);
}
}
out << node << " ";
}
int main()
{
in >> 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
out << -1;
return 0;
}