Pagini recente » Cod sursa (job #1603659) | Cod sursa (job #1035517) | Cod sursa (job #2190271) | Cod sursa (job #2263769) | Cod sursa (job #2442134)
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
vector <int> G[100005];
struct ciclu_eulerian
{
int u , v;
};
ciclu_eulerian temp;
vector <ciclu_eulerian> ans;
void euler(int u)
{
int j , v;
for(j = 0 ; j < G[u].size() ; j ++)
{
v = G[u][j];
temp.u = u;
temp.v = v;
ans.push_back(temp);
G[u].erase(G[u].begin() + j);
G[v].erase(find(G[v].begin() , G[v].end() , u));
euler(v);
}
}
int main()
{
freopen("ciclueuler.in" , "r" , stdin);
freopen("ciclueuler.out" , "w" , stdout);
int n , m , i , j , ok , u , v;
scanf("%d%d" , &n , &m);
for(i = 1 ; i <= m ; i ++)
{
scanf("%d%d" , &u , &v);
G[u].push_back(v);
G[v].push_back(u);
}
ok = 1;
for(i = 1 ; i <= n && ok == 1 ; i ++)
if(G[i].size() % 2 == 1)
ok = -1;
if(ok == -1)
printf("-1\n");
else
{
euler(1);
for(i = 0 ; i < ans.size() ; i ++)
printf("%d %d " , ans[i].u , ans[i].v);
}
return 0;
}