Pagini recente » Borderou de evaluare (job #2078312) | Cod sursa (job #1773567) | Clasament preONI 2006, Clasa a IX-a si gimnaziu | Cod sursa (job #1551866) | Cod sursa (job #2721347)
#include <fstream>
#include <vector>
#define nmax 100002
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n, m;
vector < pair < int, int > > G[nmax];
bool viz[5 * nmax];
vector < int > ans;
void dfs(int k)
{
while(!G[k].empty())
{
int nod = G[k].back().first, muc = G[k].back().second;
G[k].pop_back();
if(viz[muc]) continue;
viz[muc] = 1;
dfs(nod);
}
ans.push_back(k);
}
int main()
{
fin >> n >> m;
for(int i = 1; i <= m; ++i)
{
int x, y; fin >> x >> y;
G[x].push_back({y, i});
G[y].push_back({x, i});
}
for(int i = 1; i <= n; ++i)
{
if(G[i].size() % 2)
{
fout << -1;
return 0;
}
}
dfs(1);
ans.pop_back();
for(auto it : ans)
{
fout << it << " ";
}
return 0;
}