Pagini recente » Cod sursa (job #2233892) | Cod sursa (job #684675) | Cod sursa (job #621121) | Cod sursa (job #689466) | Cod sursa (job #1367548)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
struct muc
{
int p;
int k;
};
muc aux;
vector <muc> gr[100005];
int n,m,viz[500005],d[500005],viz2[500005],nod,l,ok=-1;
void dfs(int x)
{
int i,j;
for(i=0;i<gr[x].size() && ok==-1;i++)
{
if(gr[x][i].p==nod && viz2[gr[x][i].k]==0)
{
for(j=1;j<=l;j++)
g<<d[j]<<" ";
ok=1;
break;
}
if(viz2[gr[x][i].k]==0 && viz[gr[x][i].p]==0 && ok==-1)
{
viz2[gr[x][i].k]=1;
l++;
d[l]=gr[x][i].p;
dfs(gr[x][i].p);
d[l]=0;
l--;
}
}
}
int main()
{
int i,j,x,y;
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y;
aux.p=y;
aux.k=i;
gr[x].push_back(aux);
aux.p=x;
gr[y].push_back(aux);
}
for(i=1;i<=n && ok==-1;i++)
if(viz[i]==0)
{
viz[i]=1;
nod=i;
l++;
d[1]=nod;
dfs(i);
}
if(ok==-1)
g<<ok;
return 0;
}