Pagini recente » Cod sursa (job #888581) | Cod sursa (job #2522852) | Cod sursa (job #944449) | Cod sursa (job #347770) | Cod sursa (job #1891885)
#include <cstdio>
#include <vector>
using namespace std;
int n,m,k,l;
int u[500001], v[500001]; // nodurile grafului...extremitatile
int viz[500001] , sol[500001];
int pos[100001]; //vectorul de pozitii
vector <int> G[500002];
void Read()
{
freopen("ciclueuler.in","r",stdin);
scanf("%i %i",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%i %i",&u[i], &v[i]);
G[u[i]].push_back(i);
G[v[i]].push_back(i);
}
}
void DF(int nod)
{
while(pos[nod] < G[nod].size())
{
l = G[nod][pos[nod]];
pos[nod]++;
if(viz[l] == 0)
{
viz[l] = 1;
DF(u[l] + v[l] - nod);
}
}
sol[++k] = nod;
}
int main()
{
Read();
for (int i=1; i<=n; i++)
{
if (G[i].size()%2 == 1)//Verific daca nr. de grade ale nodului sunt impare
{
printf("",-1);
return 0;
}
}
DF(1);
freopen("ciclueuler.out","w",stdout);
for(int i=1;i<k;i++)
{
printf("%i ",sol[i]);
}
return 0;
}