Pagini recente » Cod sursa (job #1337912) | Cod sursa (job #373177) | Cod sursa (job #580299) | Cod sursa (job #3038875) | Cod sursa (job #1892534)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
#define no 100002
#define mu 500002
#define pb push_back
int i,n,m,a,b,ls,st[mu];
bool fol[mu];
struct _muchie{
int a, b;
} muchie[500001]={0};
std::vector <int> v[no],sta;
int main()
{
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>a>>b;
v[a].pb(i);
v[b].pb(i);
muchie[i].a = a;
muchie[i].b = b;
}
for(i=1;i<=n;i++)
if(v[i].size()%2) {g<<"-1";return 0;}
sta.push_back(1);
//euler
while(sta.size())
{
a=sta.back();//a e nod
if(v[a].size()){
b=v[a].back();//b e muchie
v[a].pop_back();
if(fol[b]==0)//daca n am folosit muchia
{
fol[b]=1;//o folosesc
if(muchie[b].a==a) sta.pb(muchie[b].b);
else sta.pb(muchie[b].a);
}
}
else st[++ls]=a,sta.pop_back();
}
for(i=1;i<=m;i++)
g<<st[i]<<" ";
}