Pagini recente » Cod sursa (job #352551) | Cod sursa (job #2847133) | Cod sursa (job #3287433) | Cod sursa (job #2154266) | Cod sursa (job #2492791)
#include<cstdio>
#include<vector>
const int MMAX = 500000;
const int NMAX = 100000;
struct muchie
{
int x , y;
bool exist;
};
muchie muchii[2 * MMAX + 1];
bool viz[NMAX + 1];
int total = 0;
std :: vector<int>v[NMAX + 1];
std :: vector<int>q;
void dfs(int nod)
{
if(viz[nod] == 0){
viz[nod] = 1;
total ++;
}
for(int i = 0; i < v[nod].size() ; i ++)
{
if(muchii[ v[nod][i] ].exist == 1)
{
muchii[ v[nod][i] ].exist = 0;
if(v[nod][i] % 2 == 0)
muchii[v[nod][i] - 1].exist = 0;
else
muchii[v[nod][i] + 1].exist = 0;
dfs(muchii[ v[nod][i] ].y);
}
}
q.push_back(nod);
}
int main()
{
int n , m , x , y , k = 0;
freopen("ciclueuler.in" , "r" , stdin);
freopen("ciclueuler.out" , "w" , stdout);
scanf("%d%d" , &n , &m);
for(int i = 1; i <= m ; i ++)
{
scanf("%d%d" , &x , &y);
muchii[++k] = {x , y , 1};
v[x].push_back(k);
muchii[++k] = {y , x , 1};
v[y].push_back(k);
}
dfs(1);
if(total != n){
printf("-1");
return 0;
}
for(int i = m ; i > 0 ; i --)
{
printf("%d " , q[i]);
}
return 0;
}