Pagini recente » Cod sursa (job #1852508) | Cod sursa (job #557923) | Cod sursa (job #264194) | Cod sursa (job #534056) | Cod sursa (job #3335206)
#include <iostream>
#include <vector>
#include <fstream>
#include <stack>
#include <algorithm>
#include <queue>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
vector<pair<int,int>> L[100005];
vector<int> sol;
int viz[100005];
int main()
{
int n,m;
fin>>n>>m;
for (int i=1; i<=m; i++) {
int x,y;
fin>>x>>y;
L[x].push_back({y,i});
L[y].push_back({x,i});
}
for (int i=1; i<=n; i++)
if (L[i].size()%2==1) {
fout<<-1;
return 0;
}
stack<int> st;
st.push({1});
while (!st.empty()) {
int curr=st.top();
if (L[curr].empty()) {
sol.push_back(curr);
st.pop();
}
else {
pair<int,int> next=L[curr].back();
L[curr].pop_back();
if (!viz[next.second]) {
viz[next.second]=1;
st.push(next.first);
}
}
}
for (auto it:sol)
fout<<it<<" ";
return 0;
}
// num=10,/=11,*=12,-=13,+=14,enter=15,.=16,