Pagini recente » Cod sursa (job #2890938) | Cod sursa (job #1225701) | Cod sursa (job #836336) | Cod sursa (job #1928252) | Cod sursa (job #1523311)
#include<fstream>
#include<vector>
#include<deque>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int n,m,x,y,i,nod,x1,x2;
int in[100005];
vector<int>v[100005],muc[100005];
deque<int>stiva,sol;
bool viz[500005];
int main()
{
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
muc[x].push_back(i);
muc[y].push_back(i);
in[x]++;
in[y]++;
}
for(i=1;i<=n;i++)
if((in[i]&1)==1)//in[i]%2
{
g<<-1;
return 0;
}
stiva.push_back(1);
while(!stiva.empty())
{
nod=stiva.back();
if(in[nod]==0)
{
stiva.pop_back();
g<<nod<<" ";
}
else
{
x1=v[nod].back();
x2=muc[nod].back();
v[nod].pop_back();
muc[nod].pop_back();
if(viz[x2]==0)
{
viz[x2]=1;
in[x1]--;
in[nod]--;
stiva.push_back(x1);
}
}
}
return 0;
}