Pagini recente » Cod sursa (job #276444) | Cod sursa (job #2386069) | Cod sursa (job #2001067) | Cod sursa (job #2527056) | Cod sursa (job #1972392)
#include <bits/stdc++.h>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int n,m,grad[100001];
vector <int> v[100001],T;
void sterge(int u, int w)
{
for(int i=0;i<v[u].size();++i)
if(v[u][i]==w)
{
v[u].erase(v[u].begin()+i);
break;
}
}
int main()
{
f>>n>>m;
for(int i=1;i<=m;++i)
{
int x,y;
f>>x>>y;
grad[x]++;
v[x].push_back(y);
v[y].push_back(x);
grad[y]++;
}
for(int i=1;i<=n;++i)
sort(v[i].begin(),v[i].end());
stack <int> S;
S.push(1);
while(!S.empty())
{
int u=S.top();
if(!v[u].empty())
{
S.push(v[u][0]);
sterge(v[u][0],u);
v[u].erase(v[u].begin());
}
else
{
S.pop();
T.push_back(u);
}
}
bool q=1;
for(int i=1;i<=n&&q;++i)
if(grad[i]%2)
q=0;
if(!q)
{
g<<-1;
}
else
{
for(int i=0;i<T.size()-1;++i)
g<<T[i]<<" ";
}
return 0;
}