Pagini recente » Cod sursa (job #2837226) | Cod sursa (job #87235) | Cod sursa (job #1768497) | Cod sursa (job #2508066) | Cod sursa (job #2692112)
#include <bits/stdc++.h>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
const int nmax = 100006, mmax = 500006;
int n, m, poz[mmax];
vector <pair <int, int>> vecini[nmax];
vector<int> vrasp;
void dfs(int x)
{
while(vecini[x].size()!=0)
{
int vec, nr_muchie;
tie(vec, nr_muchie) = vecini[x].back();
vecini[x].pop_back();
if(poz[nr_muchie]==0)
{
poz[nr_muchie] = 1;
dfs(vec);
}
}
vrasp.push_back(x);
}
int main()
{
in>>n>>m;
for(int i = 0; i<m; i++)
{
int a, b;
in>>a>>b;
vecini[a].push_back(make_pair(b, i));
vecini[b].push_back(make_pair(a, i));
}
for(int i = 1; i<=n; i++)
{
if(vecini[i].size()%2==1)
{
out<<"-1\n";
return 0;
}
}
dfs(1);
for(int i = 0; i<(int)vrasp.size() - 1; i++)
{
out<<vrasp[i]<<' ';
}
return 0;
}