Pagini recente » Cod sursa (job #2137451) | Cod sursa (job #2812881) | Cod sursa (job #2077374) | Cod sursa (job #121526) | Cod sursa (job #2331217)
#include <iostream>
#include <fstream>
#include <vector>
#include <bitset>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
bitset <500200> fr;
vector < pair<int,int> >L[100011];
int n,m,i,x,y,d[100011],k,nod,vecin;
int stiva [1000000];
int main()
{
fin>>n>>m;
for(i=1;i<=m;i++){
fin>>x>>y;
d[x]++;
d[y]++;
L[x].push_back({y,i});
L[y].push_back({x,i});
}
for(i=1;i<=n;i++)
if(d[i]%2==1)
{
fout<<-1;
return 0;
}
stiva[1]=1;
k=1;
while(k!=0){
nod=stiva[k];
if(L[nod].size()==0)
{
if(k!=1)
fout<<nod<<" ";
k--;
continue;
}
while(L[nod].size()>=1&&fr[ L[nod].back().second]==1)
L[nod].pop_back();
if(L[nod].size()==0)
{
if(k!=1)
fout<<nod<<" ";
k--;
continue;
}
vecin=L[nod].back().first;
stiva[++k]=vecin;
d[nod]--;
d[vecin]--;
fr[L[nod].back().second]=1;
L[nod].pop_back();
}
}