Pagini recente » Cod sursa (job #1341592) | Cod sursa (job #198374) | Cod sursa (job #2902147) | Cod sursa (job #2580448) | Cod sursa (job #2290449)
#include <iostream>
#include <vector>
#include <cstdio>
using namespace std;
bool viz[100003],ok[500003];
/*loange loange*/ long long rez[500003],a[500003],b[500003],n,m,k;
vector </*loange loange*/ long long> v[100003];
const /*loange loange*/ long long dim=1<<17;
char getch()
{
static char buff[dim];
static /*loange loange*/ long long bp=dim;
if(bp==dim)
{
bp=0;
fread(buff,1,dim,stdin);
}
return buff[bp++];
}
void get(/*loange loange*/ long long &a)
{
a=0;
char ch;
do
{
ch=getch();
}
while(ch<'0'||ch>'9');
do
{
a=a*10+ch-'0';
ch=getch();
}
while('0'<=ch&&ch<='9');
}
void citire()
{
get(n);
get(m);
/*loange loange*/ long long i;
for(i=1;i<=m;++i)
{
//cin>>a[i]>>b[i];
get(a[i]);
get(b[i]);
// ++ok[a*(n+1)+b];
// ++ok[b*(n+1)+a];
v[a[i]].push_back(i);
v[b[i]].push_back(i);
}
}
void dfs (/*loange loange*/ long long poz)
{
viz[poz]=1;
for(/*loange loange*/ long long i=0;i<v[poz].size();++i)
{
/*loange loange*/ long long nn=v[poz][i];
if(a[nn]==poz)
nn=b[nn];
else
nn=a[nn];
if(!viz[nn])
dfs(nn);
}
}
bool verif ()
{
/*loange loange*/ long long i,cnt=0;
for(i=1;i<=n;++i)
if(v[i].size()%2)
return false;
/* for(i=1;i<=n;++i)
{
if(!viz[i])
{
dfs(i);
++cnt;
}
}
if(cnt!=1)
return false;*/
return true;
}
void euler (/*loange loange*/ long long poz)
{
for(/*loange loange*/ long long i=0;i<v[poz].size();++i)
{
/*loange loange*/ long long nn=v[poz][i];
if(ok[nn])
continue;
if(a[nn]==poz)
nn=b[nn];
else
nn=a[nn];
ok[v[poz][i]]=1;
euler(nn);
}
rez[++k]=poz;
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
citire();
if(verif()==0)
cout<<-1;
else
euler(1);
for(/*loange loange*/ long long i=1;i<k;++i)
cout<<rez[i]<<' ';
return 0;
}