Pagini recente » Cod sursa (job #291895) | Cod sursa (job #2094109) | Cod sursa (job #1066824) | Cod sursa (job #2482332) | Cod sursa (job #1442887)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
int n;
vector<int> b;
void euler(vector<int> *v,int x) {
int a;
while (!v[x].empty()) {
a = v[x].back();
v[x].pop_back();
int i;
for (i=0;(unsigned)i<v[a].size();i++)
if (v[a][i] == x) {
v[a].erase(v[a].begin()+i);
break;
}
euler(v,a);
b.push_back(x);
}
}
int main()
{
int m,ok=0,j;
ifstream f("ciclueuler.in");
f>>n>>m;
vector<int> *v = new vector<int>[n+1];
vector<int> *v1 = new vector<int>[n+1];
int i,x,y;
for (i=0;i<m;i++) {
f>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
f.close();
for (i=1;i<=n;i++) v1[i] = v[i];
for (i=1;i<=n;i++) {
b.clear();
euler(v,i);
if (b[0] == b[b.size()-1]) {
ok = 1;
break;
}
for (j=1;j<=n;j++) v[i] = v1[i];
}
ofstream g("ciclueuler.out");
if (ok)
for (i=0;(unsigned)i<b.size()-1;i++) g<<b[i]<<" ";
else g<<-1;
g.close();
return 0;
}