Pagini recente » Cod sursa (job #559633) | Cod sursa (job #2097642) | Cod sursa (job #71242) | Cod sursa (job #3161556) | Cod sursa (job #1792207)
#include <cstdio>
#include <vector>
using namespace std;
struct Muchie
{
int a, b;
bool activ;
int other(int c)
{
return (a == c) ? b : a;
}
} m[500000];
vector<int> v[100000];
int n, lm, r[100000];
bool parc(int n, int gr)
{
r[gr] = n;
if(gr == lm - 1)
return true;
for(int i = 0; i < v[n].size(); i++)
{
if(m[v[n][i]].activ == false)
continue;
m[v[n][i]].activ = false;
if(parc(m[v[n][i]].other(n), gr + 1))
return true;
m[v[n][i]].activ = true;
}
return false;
}
int main()
{
freopen("ciclueuler.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
scanf("%d%d", &n, &lm);
for(int i = 0; i < lm; i++)
{
scanf("%d%d", &m[i].a, &m[i].b);
m[i].a--; m[i].b--;
m[i].activ = true;
v[m[i].a].push_back(i);
v[m[i].b].push_back(i);
}
for(int i = 0; i < n; i++)
{
if(v[i].size() == 0)
{
printf("-1");
return 0;
}
}
if(!parc(0, 0))
printf("-1");
else
{
for(int i = 0; i < lm; i++)
printf("%d ", r[i] + 1);
}
return 0;
}