Pagini recente » Cod sursa (job #2669564) | Cod sursa (job #2818080) | Cod sursa (job #1570859) | Cod sursa (job #2901345) | Cod sursa (job #2141268)
#include <fstream>
#include<vector>
using namespace std;
struct muchie{int x;int y;};
vector<int> gf[500002];
bool viz[500002];
int ans[500002],st[500002],grad[500002];
muchie v[500002];
int main()
{
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int n,m,i;
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>v[i].x>>v[i].y;
grad[v[i].x]++;
grad[v[i].y]++;
gf[v[i].x].push_back(i);
gf[v[i].y].push_back(i);
}
for(i=1;i<=n;i++)
if(grad[i]%2)
{
g<<"-1";
return 0;
}
int nr=0,k=0,nod,ok;
st[++k]=1;
while(k)
{
nod=st[k];
ok=0;
for(i=0;i<gf[nod].size()&&!ok;i++)
if(!viz[gf[nod][i]])
{
if(v[gf[nod][i]].x==nod)
st[++k]=v[gf[nod][i]].y;
else st[++k]=v[gf[nod][i]].x;
ok=1;
viz[gf[nod][i]]=1;
}
if(!ok)
{
k--;
ans[++nr]=nod;
}
}
for(i=1;i<=nr;i++)
g<<ans[i]<<" ";
return 0;
}