Pagini recente » Cod sursa (job #1296188) | Cod sursa (job #2744214) | Cod sursa (job #2745143) | Cod sursa (job #2022078) | Cod sursa (job #3339782)
#include <bits/stdc++.h>
#define NMAX 100002
#define MMAX 500002
using namespace std;
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
struct muchii
{
int x, index;
};
int n, m;
bool uz[MMAX];
vector <muchii> g[NMAX];
vector <int> sol;
void citire();
void euler(int x);
int main()
{
int i;
citire();
for(i = 1; i <= n; i++)
if(g[i].size()%2)
{
fout << -1;
return 0;
}
for(i = 1; i <= n; i++)
if(g[i].size())
{
euler(i);
break;
}
for(i = 0; i < sol.size()-1; i++)
fout << sol[i] << ' ';
return 0;
}
void citire()
{
int i, x, y;
muchii mch;
fin >> n >> m;
for(i = 1; i <= m; i++)
{
fin >> x >> y;
mch.x = y; mch.index = i;
g[x].push_back(mch);
mch.x = x;
g[y].push_back(mch);
}
}
void euler(int x)
{
muchii mch;
while(!g[x].empty())
{
mch = g[x].back();
g[x].pop_back();
if(!uz[mch.index])
{
uz[mch.index] = true;
euler(mch.x);
}
}
sol.push_back(x);
}