Pagini recente » Cod sursa (job #895690) | Cod sursa (job #2588200) | Cod sursa (job #427475) | Cod sursa (job #1001919) | Cod sursa (job #1689699)
#include <fstream>
#include <algorithm>
#include <iomanip>
#include <vector>
#include <iostream>
#define MAX 100010
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int N, M;
vector<int> graf[MAX], Stack;
void ciclueuler(int nodPornire) {
Stack.push_back(nodPornire);
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();
}
}
}
int main(){
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);
}
//
/*
for(int i=1;i<=N;i++) {
vector<int> graf1=graf[i];
cout<< "nod "<< i << " cu copii: ";
for (vector<int>::iterator it = graf1.begin() ; it != graf1.end(); ++it) {
cout<< *it<<" ";
}
cout<<"\n";
}
cout<<"\n";
cout<<"\n";*/
//
int sizeGraf=0;
for(int i=1;i<=N;i++) {
sizeGraf=graf[i].size();
//if(sizeGraf & 1)
if(sizeGraf%2!=0) {
fout<<-1;
return 0;
}
}
int nodPornire=1;
ciclueuler(nodPornire);
return 0;
}