Pagini recente » Cod sursa (job #151896) | Cod sursa (job #1647018) | Cod sursa (job #1592774) | Cod sursa (job #2925825) | Cod sursa (job #1934937)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector <int> G[10010];
vector <int> stk;
vector <int> ans;
int from[50100],to[50100],n,m;
bool viz[50100];
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==1)
{
g<<-1;
g.close();
return 0;
}
stk.push_back(1);
while(!stk.empty())
{
int nod=stk.back();
if(!G[nod].empty())
{
int muchie=G[nod].back();
G[nod].pop_back();
if(!viz[muchie])
{
viz[muchie]=1;
if(nod==from[muchie])
stk.push_back(to[muchie]);
else stk.push_back(from[muchie]);
}
}
else
{
stk.pop_back();
ans.push_back(nod);
}
}
for(int i=0;i<ans.size()-1;i++)
g<<ans[i]<<' ';
g.close();
return 0;
}