Pagini recente » Cod sursa (job #2187) | Cod sursa (job #2322120) | Cod sursa (job #2504511) | Cod sursa (job #537148) | Cod sursa (job #1783317)
#include<bits/stdc++.h>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
int n,m,st=0,a[500010];
vector<int> v[100005];
stack<int> eul;
int main()
{
int i, j, nod1, nod2;
in>>n>>m;
for(int k = 0; k < m; k++)
{
in>>i>>j;
v[i].push_back(j);
v[j].push_back(i);
}
int imp = 0;
for(i = 1; i <= n ; i++)
{
if(v[i].size() % 2 != 0){
imp = 1; break;
}
}
if(imp)
out<<-1;
else
{
eul.push(1);
while(!eul.empty())
{
nod1 = eul.top();
if(v[nod1].size())
{
nod2 = v[nod1].back();
v[nod1].pop_back();
v[nod2].erase(find(v[nod2].begin(), v[nod2].end(), nod1)); // stergem ce se repeta
eul.push(nod2);
}else
{
a[st++] = nod1;
eul.pop();
}
}
}
for(int i = 0; i <= st - 1; i++)
out<<a[i]<<" ";
in.close();
out.close();
return 0;
}