Pagini recente » Profil synnks | Monitorul de evaluare | Monitorul de evaluare | Istoria paginii utilizator/norryna07 | Cod sursa (job #2016498)
#include <fstream>
#include <set>
#include <stack>
#include <vector>
#define DIM 100001
using namespace std;
ifstream fi("ciclueuler.in");
ofstream fo("ciclueuler.out");
int n,m;
vector<int> V[DIM],REZ;
pair<int,int> M[5*DIM];
bool VIZ[5*DIM],ok=true;
stack<int> S;
int main()
{
fi>>n>>m;
for(int i=1;i<=m;i++)
{
int a,b;
fi>>a>>b;
V[a].push_back(i);
V[b].push_back(i);
M[i]=make_pair(a,b);
}
for(int i=1;i<=n;i++)
if(V[i].size()==0 || V[i].size()%2==1)
ok=false;
if(!ok)
fo<<-1;
else
{
S.push(1);
while(!S.empty())
{
int v=S.top();
int i=0;
while(i<V[v].size()&&VIZ[V[v][i]])
i++;
if(i==V[v].size())
{
S.pop();
REZ.push_back(v);
}
else
{
int to=M[V[v][i]].first;
if(to==v && M[V[v][i]].first!=M[V[v][i]].second)
to=M[V[v][i]].second;
VIZ[V[v][i]]=true;
S.push(to);
}
}
for(int i=0;i<REZ.size();i++)
fo<<REZ[i]<<" ";
}
fi.close();
fo.close();
return 0;
}