Pagini recente » Cod sursa (job #2930195) | Cod sursa (job #1750679) | Cod sursa (job #1160482) | Cod sursa (job #1702905) | Cod sursa (job #3323771)
//https://www.infoarena.ro/problema/ciclueuler
//#pragma GCC optimize ("Ofast")
//#pragma GCC optimize ("fast-math")
//#pragma GCC optimize ("unroll-loops")
//#define _USE_MATH_DEFINES
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
//#include <cstring>
//#include <cmath>
//#include <bitset>
//#include <queue>
#include <stack>
//#include <utility>
#include <algorithm>
//#include <string>
//#include <map>
//#include <unordered_map>
//#include <set>
//#include <unordered_set>
//#include <cstdint>
//#include <climits>
//#include <iomanip>
//#include <cstdio>
//#include <tuple>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
const int NRMAX = 100000;
list<int> gr[NRMAX + 1];
stack<int> rez;
bool b[NRMAX + 1];
void parcurgere(int i)
{
while (!gr[i].empty())
{
rez.push(i);
//cout << i << " ";
int j = gr[i].front();
auto it = find(gr[j].begin(), gr[j].end(), i);
gr[j].erase(it);
gr[i].pop_front();
i = j;
}
}
int main()
{
//ios_base::sync_with_stdio(false);
//cin.tie(nullptr);
//cout.tie(nullptr);
int n, m, i, x, y;
fin >> n >> m;
for (i = 1; i <= m; ++i)
{
fin >> x >> y;
gr[x].push_back(y);
gr[y].push_back(x);
}
for (i = 1; i <= n; ++i)
{
if (((int)gr[i].size() & 1) && ((int)gr[i].size()))
{
fout << "-1";
return 0;
}
}
i = 1;
parcurgere(i);
i = rez.top();
fout << i << " ";
rez.pop();
while (!rez.empty())
{
parcurgere(i);
i = rez.top();
fout << i << " ";
rez.pop();
}
return 0;
}