Pagini recente » Cod sursa (job #2215328) | Profil Djok | Cod sursa (job #2407574) | Cod sursa (job #2150025) | Cod sursa (job #1149618)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
vector<vector<long long> > graf;
vector<long long> ciclu;
vector<long long>::iterator it;
long long n,m;
void euler (long long v)
{
long long w;
while(graf[v].size())
{
w = *graf[v].begin();
graf[v].erase(graf[v].begin());
it=find(graf[w].begin(), graf[w].end(), v);
graf[w].erase(it);
euler(w);
}
ciclu.push_back(v);
}
int main()
{
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
long long i,u,v;
unsigned isEuler=1;
f>>n>>m;
graf.resize(n+1);
for(i=1;i<=m;i++)
{
f>>u>>v;
graf[u].push_back(v);
graf[v].push_back(u);
}
for(i=1;i<=n;i++)
{
if(graf[i].size()%2==1)
isEuler=0;
}
if(isEuler)euler(1);
else g<<-1;
for(i=0;i<ciclu.size()-1;i++)
g<<ciclu[i]<<' ';
return 0;
}