Pagini recente » Cod sursa (job #2313704) | Cod sursa (job #26937) | Cod sursa (job #2559830) | Cod sursa (job #507315) | Cod sursa (job #2424233)
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
vector<pair<int, int> > Muchii[100005];
vector<int> Traseu;
bool viz[100005];
void CicluEuler(int nod)
{
stack<int> st;
st.push(1);
while(!st.empty()){
auto p = st.top();
if(Muchii[p].size() == 0){
Traseu.push_back(p);
st.pop();
}
else {
int next = Muchii[p].back().first;
int edge = Muchii[p].back().second;
Muchii[p].pop_back();
if(!viz[edge]){
viz[edge] = 1;
st.push(next);
}
}
}
}
int main()
{
int n, m;
fin >> n >> m;
for(int i = 1; i <= m; ++i)
{
int x, y;
fin >> x >> y;
Muchii[x].push_back({y, i});
Muchii[y].push_back({x, i});
}
for(int i = 1; i <= n; ++i)
if(Muchii[i].size() % 2 == 1)
{
fout << -1 << '\n';
return 0;
}
CicluEuler(1);
for(int i = 0; i < Traseu.size() - 1; ++i)
fout << Traseu[i] << ' ';
fout << '\n';
return 0;
}