Pagini recente » Cod sursa (job #637939) | Cod sursa (job #1409672) | Cod sursa (job #1837855) | Cod sursa (job #1221863) | Cod sursa (job #1870599)
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <stack>
using namespace std;
vector<int> v[100200];
stack<int>lista;
int ciclu[500200];
//STL !!!!!!!!!!!!!!!!!!!!!!
FILE *fin, *fout;
int main() {
FILE *fin = fopen("ciclueuler.in", "r");
FILE *fout = fopen("ciclueuler.out", "w");
int n, m;
long long rez = 0;
fscanf(fin, "%d%d", &n, &m);
int i, nod1, nod2;
for(i=0;i < m;i++) {
fscanf(fin, "%d%d", &nod1, &nod2);
v[nod1].push_back(nod2);
v[nod2].push_back(nod1);
}
int imp=0;
for(i = 0;i < n;i++) {
if(v[i].size() % 2) {
imp=1;
break;
}
}
if(imp) {
fprintf(fout, "-1");
}
else {
lista.push(1);
while(lista.empty() == 0) {
nod1 = lista.top();
if(!v[nod1].empty()) {
nod2=v[nod1].back();
v[nod1].pop_back();
v[nod2].erase(find(v[nod2].begin(),v[nod2].end(),nod1));
lista.push(nod2);
}
else {
ciclu[rez]=nod1;
++rez;
lista.pop();
}
}
for(i=0;i < rez-1;i++)
fprintf(fout, "%lld ", ciclu[i]);
}
return 0;
fclose(fin);
fclose(fout);
}