Pagini recente » Monitorul de evaluare | Cod sursa (job #830747) | Cod sursa (job #1831902) | Cod sursa (job #142020) | Cod sursa (job #3344472)
#include <fstream>
#include <vector>
#include <unordered_set>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
int n, m;
vector<pair<int, int>> v[100005];
int used[500005];
vector<int> ans;
void dfs(int nod)
{
while(!v[nod].empty())
{
pair<int, int> nxt = v[nod].back();
v[nod].pop_back();
if(used[nxt.second] == 0)
{
used[nxt.second] = 1;
dfs(nxt.first);
}
}
ans.push_back(nod);
}
int main()
{
in>>n>>m;
int x, y;
for(int i = 1; i<=m; i++)
{
in>>x>>y;
v[x].push_back({y, i});
v[y].push_back({x, i});
}
for(int i = 1; i<=n; i++)
{
if(v[i].size() % 2 == 1)
{
out<<-1;
return 0;
}
}
dfs(1);
ans.pop_back();
for(auto it: ans)
{
out<<it<<" ";
}
return 0;
}