Pagini recente » Cod sursa (job #797566) | Cod sursa (job #2539414) | Cod sursa (job #180877) | Cod sursa (job #2116492) | Cod sursa (job #1134398)
#include <fstream>
#include <vector>
using namespace std;
ifstream in ("ciclueuler.in");
ofstream out ("ciclueuler.out");
const int N = 100005;
struct Muchie {
int first;
int second;
};
int n, m, cnt;
int deAfisat[N*5];
bool folosit[N*5];
vector <int> a[N];
Muchie v[N*5];
void read()
{
in >> n >> m;
for (int i = 1; i <= m; ++i) {
int x, y;
in >> x >> y;
v[i] = (Muchie){x, y};
a[x].push_back(i);
}
}
void euler(int x)
{
int y, indice;
for (vector<int>::iterator it = a[x].begin(); it < a[x].end(); ++it) {
indice = *it;
if(!folosit[indice]) {
folosit[indice] = true;
y = v[indice].first;
if (x == y) {
y = v[indice].second;
}
euler(y);
}
}
deAfisat[++cnt] = x;
}
void solve()
{
euler(1);
//out << cnt << "\n";
if (cnt == m+1) {
for (int i = 2; i <= cnt; ++i) {
out << deAfisat[i] << " ";
}
out << "\n";
} else {
out << "-1\n";
}
}
int main()
{
read();
solve();
return 0;
}