Pagini recente » Cod sursa (job #2282136) | Cod sursa (job #1346872) | Cod sursa (job #2374226) | Cod sursa (job #2511295) | Cod sursa (job #1265340)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
vector <int> a[100004];
int ok;
void Euler(int x)
{
while(!a[x].empty())
{
int y=a[x][a[x].size()-1];
std::vector<int>::iterator it;
it = find (a[y].begin(), a[y].end(),x);
int k=a[x][a[x].size()-1];
a[x].pop_back();
a[y].erase(it);
Euler(k);
}
if(x==1)
{
if(ok==0)
{fout<<x<<' ';ok++;}
}
else
fout<<x<<' ';
}
int main()
{
int n,m,i,u,v;
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>u>>v;
a[u].push_back(v);
a[v].push_back(u);
}
// for(i=1;i<=n;i++)
// {for(int j=0;j<a[i].size();j++)
// cout<<a[i][j]<<' ';
// cout<<'\n';}
for(i=1;i<=n;i++)
if(a[i].size()&1)
{
fout<<"-1\n";
fin.close();
fout.close();
return 0;
}
Euler(1);
return 0;
}