Pagini recente » Cod sursa (job #856803) | Cod sursa (job #3143812) | Cod sursa (job #3248389) | Formatare Textile | Cod sursa (job #1149970)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <stack>
using namespace std;
vector<vector<long long> > graf;
vector<long long> ciclu;
vector<long long>::iterator it;
stack<long long>q;
long long n,m;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
void euler ()
{
long long v,w;
while(!q.empty())
{
v = q.top();
if(!graf[v].size()){g<<v<<' ';q.pop();}
else
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);
q.push(w);
}
}
}
int main()
{
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;break;
}
q.push(1);
if(isEuler)euler();
else g<<-1;
return 0;
}