Pagini recente » Cod sursa (job #2228126) | Cod sursa (job #3241321) | Cod sursa (job #1413473) | Cod sursa (job #1041388) | Cod sursa (job #1922815)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector <int> G[100010];
vector <int> stk;
vector <int> ans;
int n,m,from[500100],to[500100];
bool viz[100010];
int main()
{
f>>n>>m;
for(int i=1;i<=m;i++)
{
int a,b;
f>>a>>b;
G[a].push_back(i);
G[b].push_back(i);
from[i]=a;
to[i]=b;
}
f.close();
for(int i=1;i<=n;i++)
if(G[i].size()%2!=0)
{
g<<-1<<'\n';
g.close();
return 0;
}
stk.push_back(1);
while(!stk.empty())
{
int nod=stk.back();
if(!G[nod].empty())
{
int vf=G[nod].back();
G[nod].pop_back();
if(!viz[vf])
{
viz[vf]=1;
if(from[vf]==nod)
stk.push_back(to[vf]);
else stk.push_back(from[vf]);
}
}
else
{
stk.pop_back();
ans.push_back(nod);
}
}
for(int i=0;i<ans.size()-1;i++)
g<<ans[i]<<' ';
g.close();
return 0;
}