Pagini recente » Cod sursa (job #2940414) | Cod sursa (job #2426928) | Cod sursa (job #411751) | Cod sursa (job #361291) | Cod sursa (job #1679246)
#include <fstream>
#include <algorithm>
#include <iomanip>
#include <vector>
#include <iostream>
#define MAX 100002
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int N, M;
vector<int> graf[MAX], Stack;
void citire() {
int a, b;
fin>>N>>M;
for(int i=1;i<=M;i++)
{
fin>>a>>b;
graf[a].push_back(b);
graf[b].push_back(a);
}
}
void euler() {
Stack.push_back(1);
while(Stack.size())
{
int nod=Stack.back();
if(graf[nod].size())
{
int fiu=graf[nod].back();
graf[nod].pop_back();
graf[fiu].erase(find(graf[fiu].begin(), graf[fiu].end(), nod));
Stack.push_back(fiu);
}
else
{
fout<<nod<<" ";
Stack.pop_back();
}
}
}
void solve(){
for(int i=1;i<=N;i++)
{
if(graf[i].size() & 1)
{
fout<<-1;
return;
}
}
euler();
}
int main()
{
citire();
/*cout<<endl<<"matrice"<<endl;
for(int i=1;i<=N;i++) {
vector<int> graf1=graf[i];
for (vector<int>::iterator it = graf1.begin() ; it != graf1.end(); ++it) {
cout<< *it<<" ";
}
cout<<endl;
}
cout<<endl;*/
solve();
return 0;
}